powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Результат запроса по локальной сети
58 сообщений из 58, показаны все 3 страниц
Результат запроса по локальной сети
    #38872371
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста, кто знает. У меня FB 2.5, приложение С#.net 2013 , использую последний провайдер FirebirdSql.Data.FirebirdClient.dll 4.6.1 . Если с помощью IBExpert с того же компьютера в локальной сети, этот запрос отрабатывается около 100 ms, а из приложения 15 секунд. Результат запроса около 600 записей из пяти легких полей. Пробовал ридером и адаптером, результат одинаков. Смотрел в отладчике, насколько я понял, запрос отправляется на сервер и выполняется на сервере мгновенно, а проблема в получении результата запроса. Может есть какой-то другой способ, получить результат не по записям а единой таблицей?
Код: c#
1.
2.
3.
4.
5.
DataTable dt = new DataTable();
using (FirebirdSql.Data.FirebirdClient.FbDataReader fdr = com.ExecuteReader())
                {
                    dt.Load(fdr, LoadOption.OverwriteChanges);                    
                }


Проблема не в одном запросе, в моем приложении таких много нужно, но работает это всегда одинаково долго. Подскажите пожалуйста, что я делаю не так, или в какой стороне искать решение.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872414
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Chatlaninn!
You wrote on 5 февраля 2015 г. 15:06:17:

Chatlaninn> Помогите пожалуйста, кто знает. У меня FB 2.5, приложение С#.net 2013 ,
> использую последний провайдер FirebirdSql.Data.FirebirdClient.dll 4.6.1
> . Если с помощью IBExpert с того же компьютера в локальной сети, этот
> запрос отрабатывается около 100 ms, а из приложения 15 секунд. Результат
> запроса около 600 записей из пяти легких полей.
в IBExpert фетчишь все записи до упора?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872427
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это обычный select, который в SQL редакторе IBExpert мгновенно показывает результат, всю таблицу целиком.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872431
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

можно посмотреть этот обычный SELECT и DDL таблиц
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872439
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

попробуй посмотреть трейсом что там за кулисами творится
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872450
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
select ID, DDPRIEM, ID_PACIENT, FIO, ID_KASSIR, KAS_FIO, ID_DOKTOR, DOK_FIO, NOMER 
from v_priems 
where (ddpriem between '15.12.2014 00:00' and '05.02.2015 23:59') order by ddpriem


В данном случае источник данных это вьюха, но насколько я понимаю, проблема не на сервере и не в запросе, так как локально приложение работает без задержек, потому как не по сети, проблемы начинаются, когда это же приложение получает результаты по локальной сети. Может я не прав, но почему то мне кажется, что это из за того, что провайдер .net каждую запись результата запроса с сервера берет по отдельности, по очереди.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872451
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисChatlaninn,

попробуй посмотреть трейсом что там за кулисами творится

Не нужно, .Net при Load грузит все записи ( фетчит ) как уже написали, ibexpert только то что на экран, в winforms нет штатных компонентов, которые позволяли бы грузить частями по запросу при прокрутке. Так что если человек не понимает модель заложенную в эти DataSource-ы Microsoft-ом то ему проще будет взять "Delphi и его компоненты" ;)
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872456
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn
Код: plsql
1.
2.
3.
select ID, DDPRIEM, ID_PACIENT, FIO, ID_KASSIR, KAS_FIO, ID_DOKTOR, DOK_FIO, NOMER 
from v_priems 
where (ddpriem between '15.12.2014 00:00' and '05.02.2015 23:59') order by ddpriem


В данном случае источник данных это вьюха, но насколько я понимаю, проблема не на сервере и не в запросе, так как локально приложение работает без задержек, потому как не по сети, проблемы начинаются, когда это же приложение получает результаты по локальной сети. Может я не прав, но почему то мне кажется, что это из за того, что провайдер .net каждую запись результата запроса с сервера берет по отдельности, по очереди.

Сколько записей во view по днанному запрсу?

[quot Chatlaninn]
Код: plsql
1.
2.
3.
select count(*) from (select ID, DDPRIEM, ID_PACIENT, FIO, ID_KASSIR, KAS_FIO, ID_DOKTOR, DOK_FIO, NOMER 
from v_priems 
where (ddpriem between '15.12.2014 00:00' and '05.02.2015 23:59') order by ddpriem )
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872460
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всего 620 записей получается
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872464
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В других случаях, когда я из одной таблицы выбираю ФИО и id, но записей так же много, так же долго обрабатывается.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872470
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChatlaninnВ других случаях, когда я из одной таблицы выбираю ФИО и id, но записей так же много, так же долго обрабатывается.

А какие параметры в этот момент у сети? ( ping до сервера, и скорость передачи )?
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872476
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

620 записей это мало. И я не понимаю как они могут грузится 15 секунд. То что .net через провайдер адаптер грузит все записи, а не фетчит по одной я знаю. Ты пробовал в IBE жмакать кнопочку fetchAll?
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872478
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
средний ping 1msec
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872481
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

точнее с сервера то фетчит он их один фиг также. А вот DataTable будет заполнен до упора пока они не кончатся в курсоре
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872490
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В IBExpert Execute and fetch all
Plan
PLAN JOIN (JOIN (SORT (JOIN (V_PRIEMS TP NATURAL, V_PRIEMS TPAC INDEX (PK_T_PACIENT))), V_PRIEMS TUS INDEX (PK_T_USER)), V_PRIEMS TOS INDEX (PK_T_SOTR))

------ Performance info ------
Prepare time = 16ms
Execute time = 2s 137ms
Avg fetch time = 0,11 ms
Current memory = 34 658 256
Max memory = 37 926 152
Memory buffers = 2 048
Reads from disk to cache = 400
Writes from cache to disk = 0
Fetches from cache = 342 173
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872507
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

ну вот 2s 137ms это уже совсем не 100ms. А теперь надо запустить трейс и посмотреть что за дополнительные запросы идут при заполнении DataTable. Вполне возможно что скорость можно увеличить если заранее создать все поля таблицы DataTable.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872522
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисChatlaninn,

ну вот 2s 137ms это уже совсем не 100ms. А теперь надо запустить трейс и посмотреть что за дополнительные запросы идут при заполнении DataTable. Вполне возможно что скорость можно увеличить если заранее создать все поля таблицы DataTable.

в
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
public FbCommand(string cmdText, FbConnection connection, FbTransaction transaction)
            : base()
        {
            this.namedParameters = new List<string>();
            this.updatedRowSource = UpdateRowSource.Both;
            this.commandType = CommandType.Text;
            this.designTimeVisible = true;
            this.commandTimeout = 30;
            this.fetchSize = 200;


Можно переопределить на > 620
( вроде public )
p.s. Про IBExpert вроде писали что там время не совсем верное
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872537
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81Можно переопределить на > 620
Можно. Но это не поможет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872542
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNikolayV81Можно переопределить на > 620
Можно. Но это не поможет.


? не разбирался, а почему не поможет?
( я к тому что совсем проблему в 2 сек. не решит, это понятно, но м не 10 же? )
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872545
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81,

в IBE отражает не время выполнения запроса, а время за которое сам IBE получил все данные которые он запросил, когда не жмакают Fetch All он запрашивает не все данные. Естественно туда могут входить и часть запросов к системным таблицам.

Вообще у ТС какой-то странный результат, когда я пробовал .NET он у меня грузил 60000 записей за 30-50 секунд. И эти записи были довольно широкими. Конечно потом я отказался от загрузки такого количества записей в структуры типа DataTable. А тут какие то жалки 600 записей за 15 секунд.

Хотя мне видится что тут есть поле деятельности для улучшения самой вьюхи. Можно её раскрыть?
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872555
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81а почему не поможет?
Потому что, даже если этот параметр действительно используется при обращении к серверу
(что не факт), это изменение заменит четыре раунд-трипа на один. При пинге в миллисекунду
результат будет в пределах погрешности измерения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872557
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не ругайтесь пожалуйста, вьюха на скорую руку, так как все в спешке, проект горит.
Сейчас создал поля DataTable а потом Load-ил те же самые 15 секунд, правда в этот раз проверял на VMware
CREATE OR ALTER VIEW V_PRIEMS(
ID,
DDPRIEM,
ID_PACIENT,
FIO,
DDROGD,
ID_KASSIR,
KAS_FIO,
ID_DOKTOR,
DOK_FIO,
NOMER)
AS
select tp.id,tp.ddpriem, tp.id_pacient, tpac.fio, tpac.ddrogd, tp.id_kassir, tus.fio as "kas_fio",tp.id_doktor,tos.fio as "dok_fio",tp.nomer
from t_priems tp
left outer join t_pacient tpac on tp.id_pacient = tpac.id
left outer join t_user tus on tp.id_kassir = tus.id
left outer join t_sotr tos on tos.id = tp.id_doktor
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872571
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

а теперь ответь на кой тебе тотальный LEFT OUTER JOIN. У тебя что приёмы могут быть без пациента?
LEFT JOIN не даёт оптимизатору подумать.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872577
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там нигде не должно быть Null, это я на всякий случай, пока тестовый режим, сейчас убрал все эти join, а результат такой же. Получается проблема все же в самом приложении, как то я не так load делаю...
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872586
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

1. Замени все LEFT JOIN на просто JOIN, если там они реально не требуются.
2. Проверь в IBE свой запрос он при FetchAll. Он может быть будет выполняться быстрее
3. Покажи как ты инициализируешь и создаёшь FbCommand com
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872600
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через IBE получается 2,9 секунды с fetch all

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (FirebirdSql.Data.FirebirdClient.FbConnection con = new FirebirdSql.Data.FirebirdClient.FbConnection(connect))
            {
                con.Open();
                FirebirdSql.Data.FirebirdClient.FbTransaction fbTransaction = con.BeginTransaction();

                FirebirdSql.Data.FirebirdClient.FbCommand com = new FirebirdSql.Data.FirebirdClient.FbCommand(zapr, con, fbTransaction);

                using (FirebirdSql.Data.FirebirdClient.FbDataReader fdr = com.ExecuteReader())
                {

                    dt.Load(fdr, LoadOption.OverwriteChanges);
                    fdr.Close();
                }                
                con.Close();
                fbTransaction.Dispose();
            }
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872603
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

Это мне кажется
что план

Код: sql
1.
PLAN JOIN (JOIN (SORT (JOIN (V_PRIEMS TP NATURAL, V_PRIEMS TPAC INDEX (PK_T_PACIENT))), V_PRIEMS TUS INDEX (PK_T_USER)), V_PRIEMS TOS INDEX (PK_T_SOTR))


и вьюха
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR ALTER VIEW V_PRIEMS(
ID,
DDPRIEM,
ID_PACIENT,
FIO,
DDROGD,
ID_KASSIR,
KAS_FIO,
ID_DOKTOR,
DOK_FIO,
NOMER)
AS
select tp.id,tp.ddpriem, tp.id_pacient, tpac.fio, tpac.ddrogd, tp.id_kassir, tus.fio as "kas_fio",tp.id_doktor,tos.fio as "dok_fio",tp.nomer
from t_priems tp
left outer join t_pacient tpac on tp.id_pacient = tpac.id
left outer join t_user tus on tp.id_kassir = tus.id
left outer join t_sotr tos on tos.id = tp.id_doktor 


как бы не соответствуют друг другу

Ну по крайней мере план не соответствует запросу
Код: sql
1.
Select * from V_PRIEMS where 
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872612
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот этот план
План
PLAN JOIN (VP TP NATURAL, VP TOS INDEX (PK_T_SOTR), VP TPAC INDEX (PK_T_PACIENT), VP TUS INDEX (PK_T_USER))

------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 93ms
Среднее время на получение одной записи = 0,09 ms
Current memory = 35 042 536
Max memory = 42 480 232
Memory buffers = 2 048
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 100 851
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872615
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но это локально, а если по сети, получается в IBE 2,9 секунды, а в приложении load происходит в течении 15 секунд
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872618
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

у него во вьюхе сортировка воткнута. Причём совершенно зря. Не надо так делать.

Chatlaninn,
на ddpriem индекс есть?

Почему ты транзакцию убиваешь после дисконнекта? И уж если тебе эта транзакция больше не нужна то я бы её завершил коммитом, хотя Dispose() скорее всего так и делает.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872622
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

это что жt за сеть такая. Определение полей в таблицах покажи. Сдаётся мне там с дуру влеплено что типа VARCHAR(1024) или BLOB на какое нибудь FIO
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872626
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индекса пока еще нет нет, коммит поставлю, просто я не сплю уже давно... Все обращают внимание на запрос, индексы и т.д. то есть на базу, но ведь если бы проблема была в этом, должно было бы тормозить и локально? А тормозит только по сети. Или я не прав?
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872635
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

размеры и типы полей покажи. Индекс добавь обязательно. И ещё большинство из присутствующих здесь не пользуются .NET, но зато много могут подсказать по самому FB, поэтому и "Все обращают внимание на запрос, индексы и т.д. то есть на базу"
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872637
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, такого ничего нет, сеть обычная, рядом ноутбук, в метре от wifi, а база на мощном компьютере соединенным с роутером кабелем 100Mb
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
CREATE TABLE T_PACIENT (
    ID          INTEGER NOT NULL,
    FIO         VARCHAR(30),
    FAM         VARCHAR(30),
    NAME        VARCHAR(30),
    OTCH        VARCHAR(30),
    SEX         CHAR(1),
    DDROGD      TIMESTAMP,
    NOMOMS      VARCHAR(30),
    NOMDMS      VARCHAR(30),
    SKIDKA      DOUBLE PRECISION,
    ID_PASPORT  INTEGER,
    ADRES       VARCHAR(200),
    KOMMENT     VARCHAR(300),
    DEL         SMALLINT,
    US_ID       INTEGER,
    DDTT        TIMESTAMP
);
CREATE TABLE T_PRIEMS (
    ID          INTEGER NOT NULL,
    DDPRIEM     TIMESTAMP,
    ID_PACIENT  INTEGER,
    ID_KASSIR   INTEGER,
    ID_USLUG    INTEGER,
    ID_DOKTOR   INTEGER,
    CENA        DOUBLE PRECISION,
    SKIDKA      DOUBLE PRECISION,
    NOMER       INTEGER,
    DEL         SMALLINT,
    US_ID       INTEGER,
    DDTT        TIMESTAMP
);
CREATE TABLE T_SOTR (
    ID        INTEGER NOT NULL,
    FIO       VARCHAR(30),
    FAM       VARCHAR(30),
    NAME      VARCHAR(30),
    OTCH      VARCHAR(30),
    ID_DOLG   INTEGER,
    DDPRIOM   TIMESTAMP,
    TABNOMER  INTEGER,
    DDUVOLEN  TIMESTAMP,
    DDROGD    TIMESTAMP,
    KONTINF   VARCHAR(300),
    DEL       SMALLINT,
    US_ID     INTEGER,
    DDTT      TIMESTAMP
);
CREATE TABLE T_USER (
    ID       INTEGER NOT NULL,
    FIO      VARCHAR(30),
    FAM      VARCHAR(30),
    NAME     VARCHAR(30),
    OTCH     VARCHAR(30),
    PASSW    VARCHAR(20),
    ID_DOLG  INTEGER,
    DEL      SMALLINT,
    US_ID    INTEGER,
    DDTT     TIMESTAMP
);
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872642
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChatlaninnВсе обращают внимание на запрос, индексы и т.д. то есть на базу, но ведь
если бы проблема была в этом, должно было бы тормозить и локально? А тормозит только по
сети.
Всё просто: те, кто использовал .NET, понятия не имеют почему он у тебя тормозит и копают
там где светлее. Те, кто не используют .NET, не хотят голословно заявлять, что это
глюкавый тормоз и тоже копают в другом месте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872647
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

1. Добавь индекс ddpriem
2. Покажи вьюху в том виде какая она у тебя есть
3. Покажи запрос zapr в такаом виде в котором он у тебя есть
4. Сделай по сети FetchAll этого запроса (с добавленным индексом) в IBE по сети и покажи результат
5. Выполни этот же запрос (с добавленным индексом) в своей проге и доложи результат.

И таки ещё одно запрос потом второй раз выполни в своей проге и скажи результат выполнения.

Просто прога на .NET первый раз всегда выполняет его дольше
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872649
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну не такой он уж глюкавый тормоз, если на нём Web сайты собирать. А для оконных приложений ну его нафиг
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872653
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысль наводят твои сообщения
ChatlaninnВремя подготовки запроса = 16ms
Время выполнения запроса = 93ms
Но это локально, а если по сети, получается в IBE 2,9 секунды, а в приложении load происходит в течении 15 секунд

Но это локально, а если по сети, получается в IBE 2,9 секунды
- Сетка тормознутая
- разные запросы
--разные базы

в IBE 2,9 секунды, а в приложении load происходит в течении 15 секунд
- в приложение не так (я с .NET не знаком и ничего по этому поводу сказать не могу)
- разные запросы
--разные базы

зы. разные запросы и разные базы проходил много раз и сам :(
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872657
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

а я предлагал трейсом глянуть
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872673
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вьюха, как есть:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE OR ALTER VIEW V_PRIEMS(
    ID,
    DDPRIEM,
    ID_PACIENT,
    FIO,
    DDROGD,
    ID_KASSIR,
    KAS_FIO,
    ID_DOKTOR,
    DOK_FIO,
    NOMER)
AS
select tp.id,tp.ddpriem, tp.id_pacient, tpac.fio, tpac.ddrogd, tp.id_kassir, tus.fio as "kas_fio",tp.id_doktor,tos.fio as "dok_fio",tp.nomer
from t_priems tp, t_pacient tpac, t_user tus, t_sotr tos
where (tp.id_pacient = tpac.id) and(tp.id_kassir = tus.id) and (tos.id = tp.id_doktor)


Запрос как есть, то есть как он создается в приложении:
Код: plsql
1.
2.
3.
select ID, DDPRIEM, ID_PACIENT, FIO, DDROGD, ID_KASSIR, KAS_FIO, ID_DOKTOR, DOK_FIO, NOMER 
from v_priems 
where (ddpriem between '15.12.2014 00:00' and '05.02.2015 23:59') order by ddpriem



IBE по сети
Plan
PLAN SORT (JOIN (V_PRIEMS TP INDEX (_IDXDDPRIEM), V_PRIEMS TOS INDEX (PK_T_SOTR), V_PRIEMS TPAC INDEX (PK_T_PACIENT), V_PRIEMS TUS INDEX (PK_T_USER)))

------ Performance info ------
Prepare time = 16ms
Execute time = 1s 887ms
Avg fetch time = 0,10 ms
Current memory = 35 297 400
Max memory = 42 622 808
Memory buffers = 2 048
Reads from disk to cache = 0

А приложение по сети все те же 15 секунд, пробовал в отладчике, эти 15 секунд уходят на DataTable.Load()
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872684
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m
Сеть обычная как на большинство предприятий, так же параллельно проверяю в VMware, результат такой же, база и запросы точно одинаковые, ставлю останов в отладчике и считываю с переменной запроса, все одинаково. Боюсь дело в провайдере может в FireBird клиенте, кстати клиент и сервер должны быть одной версии? А разрядность как? Может это влияет, потому как сервер 64 , а на клиентах 32 рязряда, кстати и приложение мое для 32 -ух рязрадных...
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872689
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

блин на кой ты явные JOIN заменил на неявные?

Попробуй датаридором извлечь 1 строку посмотри сколько времени на это уйдёт.

И ещё проверь запрос

Код: sql
1.
2.
3.
select ID, DDPRIEM, ID_PACIENT, FIO, DDROGD, ID_KASSIR, KAS_FIO, ID_DOKTOR, DOK_FIO, NOMER 
from v_priems 
where (ddpriem between '15.12.2014 00:00' and '05.02.2015 23:59') order by ddpriem ROWS 1



в своём приложении. Если дело только в передачи по сети, то такой запрос 1 строка должна быть получена пулей.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872698
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал, дописал в конце запроса Rows 1 , запустил приложение по сети, результат ошеломляющий! Одна запись появилась мгновенно.
То есть дело не в базе, вначале я загрузил в базу всех клиентов за прошлый период работающей организации, хотел посмотреть как будет выглядеть справочник клиентов, локально было нормально около 15000 записей, но просто ФИО, без ничего только одно поле, без сортировки, из одной таблицы, а по сети думало мое приложение минут 5 и попращалось. Я думал, что слишком много записей, но 1000 - это необходимость.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872706
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChatlaninnЧерез IBE получается 2,9 секунды с fetch all

Код: c#
1.
using (FirebirdSql.Data.FirebirdClient.FbConnection con = new FirebirdSql.Data.FirebirdClient.FbConnection(connect))


А ты можешь попробовать этот свой тест через IBProvider и его же ADO.NET провайдер? Надеюсь, последний асилит твой тест :)

По идее, если оно будет так же тупить, то проблема в
Код: c#
1.
dt.Load(fdr, LoadOption.OverwriteChanges);



Примеры настройки подключения можно посмотреть здесь .

В чистом виде, скорость загрузки у IBProvider-a и IBE на средних множествах сопоставима.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872711
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChatlaninnБоюсь дело в провайдере может в FireBird клиенте

А ты используешь Firebird клиент или встроенную в провайдер эмуляцию сетевого протокола?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872726
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 5 февраля 2015 г. 18:26:51:

Dimitry Sibiryakov> А ты используешь Firebird клиент или встроенную в провайдер эмуляцию
> сетевого протокола? а когда чинчура её туда запихал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872738
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа когда чинчура её туда запихал?
Да вроде бы изначально JDBC и .NЕT были двумя извращениями с прямой реализацией протокола.
Это потом производители сжалились и позволили вызывать из байт-кода нативные библиотеки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872745
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 5 февраля 2015 г. 18:38:14:

Dimitry Sibiryakov> Да вроде бы изначально JDBC и .NЕT были двумя извращениями с прямой
> реализацией протокола. JDBC type 4 да, но не изначально.
про .NЕT слышу впервые.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872750
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа когда чинчура её туда запихал?
ее туда пихал еще Альварез
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872756
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitr!
You wrote on 5 февраля 2015 г. 18:53:19:

Dimitr> ее туда пихал еще Альварез ужас чо творят...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872764
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую Firebird ADO.NET Data Provider скачанный с сайта firebirdsql.org, на самом деле там только одна dll FirebirdSql.Data.FirebirdClient.dll, работаю я с ней и ее предшественниками уже несколько лет, никаких проблем не было, то есть запросы, вызовы процедур работают нормально, только с Blob полями вообще ничего не получилось, решил вопрос другим путем. Еще проблема, что нигде нет описания этой dll , там много всяких объектов, методов, наверное они работают и их можно использовать, может быть и моя проблема решается с помощью более глубоких знаний этого провайдера, по этому я здесь и написал, в надежде, что кто-либо подскажет.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872785
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninnпроблема, что нигде нет описания этой dll
Странно, я помню, что на провайдер была вполне приличная документация, но сейчас на сайте
офф.сайте нет ссылки. Почему бы тебе не пойти и не спросить у Иржи куда он её засунул?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872836
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех участвующих и старающихся помочь искренне благодарю. Если появится у кого информация как работать с этим драйвером-провайдером напишите пожалуйста, буду очень рад. Самому потратить несколько дней на это возможности нет, проект действительно горит.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38872887
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninn,

документация у него где-то была, возможно в предыдущих дистрибутивах. В последнем файле с исходниками документированы только гайдлайны и сетевой протокол доступа к ФБ. Еще на конференции в Люксембурге в 2011-2012 году Иржи показывал несколько примеров. Почему всего этого нет в download, нужно ткнуть его пальцем.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38873004
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chatlaninnddpriem between '15.12.2014 00:00' and '05.02.2015 23:59'


Никогда так не делайте, эффект '23:59:59:999'наступает неожиданно и всегда не вовремя
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38873007
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNikolayV81а почему не поможет?
Потому что, даже если этот параметр действительно используется при обращении к серверу
(что не факт), это изменение заменит четыре раунд-трипа на один. При пинге в миллисекунду
результат будет в пределах погрешности измерения.


Я бы не стал доверять этому значению ping, другой причины роста времени в примерно 4 раза ( 2,9 - 15 сек ) я не вижу, а 2,9 сек. автора похоже устраивает ( на мой взгляд у него ещё и с сервером проблемы )

Автору, попробуйте поменять параметр, будет снижение или нет
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38873082
Фотография Macks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChatlaninnВсех участвующих и старающихся помочь искренне благодарю. Если появится у кого информация как работать с этим драйвером-провайдером напишите пожалуйста, буду очень рад. Самому потратить несколько дней на это возможности нет, проект действительно горит.

1. Собери провайдер под отладкой и посмотри что он делает с метаданными для каждой записи при фетче.
2. Проверь как будет работать если в холостую считать из ридера данные в локальную структуру.
3. Удачи.
...
Рейтинг: 0 / 0
Результат запроса по локальной сети
    #38873796
Chatlaninn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
УРА!!! Я балбес, проблема решена!!! У меня в строке подключения, которую я писал около 5 лет назад, а создается она конечно динамически Packet Size=1024 , я его поменял как и на сервере Packet Size=8192. Теперь 22 000 записей за 1.5 секунды, что полностью устраивает, то есть это журнал операций за целый год может выводиться так быстро.
Всем огромное спасибо!
...
Рейтинг: 0 / 0
58 сообщений из 58, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Результат запроса по локальной сети
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]