Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 cxGrid + FetchAll + GridMode  [new]
AlexSmith
Guest
Есть табличка, которая содержит в себе 5млн. записей.
БД: MSSQL 2005

Cтавим на форму cxgrid1, создаем cxgrid1DBTableView, привязываем к нему DataSource.
К DataSource привязываем Query.

Делаем чтобы отображалось в cxGrid по 100 записей, cледующим образом:

cxGrid1DBTableView1.DataController.DataModeController.GridMode := True;
cxGrid1DBTableView1.DataController.DataModeController.GridModeBufferCount := 100;

MSQuery1.FetchAll := False;
MSQuery1.FetchRows := 100;

Приложение запускаем, отображается 100 записей, как только делаешь

MSQuery1.Close;

то понимаем,что Query пытается зафетчить все записи, которые только есть в ДатаСете и только после этого закрывается. (На это у него уходит порядка 1 минуты).

Делал Free у Query, тоже самое, впадает в минутный ступор.

Как сделать так, чтобы при частичном просмотре, Close у процедуры отрабатывал моментально, а недогружал все данные, которые не отобразил?
13 май 11, 17:37    [10649743]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 48084
AlexSmith
Как сделать так, чтобы при частичном просмотре, Close у процедуры отрабатывал моментально, а недогружал все данные, которые не отобразил?
пользоваться нормальным методом отбора данных -
select <fields>
  from <tables>
 where <conditions>
14 май 11, 08:14    [10651392]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9980
Блог
че то не верится , у меня в таблице 9214722 записей все нормально.... но правда у меня оракле с ODAC , но и с МССГЛ тоже самое должен быть!!

покажы код.....
14 май 11, 09:59    [10651448]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 48084
Ramin,

а ты where в запросе пишешь?
14 май 11, 10:46    [10651490]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?
14 май 11, 11:18    [10651531]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 48084
X11
А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?
просматривать 5 миллионов записей даже порциями, без фильтра и сортировки - бред сивой кобылы
14 май 11, 14:58    [10652089]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
andreymx
Ramin,

а ты where в запросе пишешь?

интересно как это связано с вопросом ТС...
14 май 11, 18:31    [10652660]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
andreymx
X11
А зачем where, если человеку нужно отображать все записи порциями?

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

14 май 11, 18:32    [10652664]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
схGrid
Guest
Q: TpFIBDataSet;
FetchAll - стоит False.

 GridViewData.DataController.DataModeController.GridModeBufferCount := 100;
 GridViewData.DataController.DataModeController.GridMode := true;
 Q.Open;

Смотрю SQL монитор тянутся все записи. Как сделать ограничение на 100 записей?
16 май 11, 12:28    [10657557]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
Если тема еще не закрыта, то хотелось бы оживить, поскольку проблема та же, только решения найти не удалось.

Есть компонент TOraQuery (ODAC), у которого FetchAll=False и FetchRows=300,
есть cxGrid, у cxGridDBTableView которого свойства GridMode=True и GridModeBufferCount=300.
В самом TOraQuery простой запрос по таблице, результатом выборки есть набор из 6 миллионов записей (к примеру).
При этих всех настройках набор открывается минут 5, хотя должен влет показать первые 300 записей.
Аналогично было реализовано на DOA-шных компонентах, все работало четко.

Студия 10.1 Berlin, ODAC версии 10.1.5, DevExpress версия 16.1.2
30 авг 18, 17:26    [21659250]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Леонов Юрий,

Можно проверить, чтобы в коде при открытии не было команды на переход к последней записи датасета (да и вообще стоит обратить внимание на любые манипуляции с датасетом, гридом, сортировками и т.п.).
30 авг 18, 17:30    [21659255]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
JaDi,

Выполняется только <DataSet>.Open и он ждет пока не отфетчатся все записи. Только после этого начинает работать грид.
На самом датасете нет никаких дополнительных обработчиков событий.
31 авг 18, 08:03    [21659590]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Проверь открытие НД без привязки к сетке.
31 авг 18, 09:51    [21659723]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
X11,

тоже самое. Никакой разницы((
31 авг 18, 10:32    [21659774]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
zinpub
Member

Откуда:
Сообщений: 214
OraSession.DisconnectedMode не True случайно ?
31 авг 18, 10:35    [21659776]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
zinpub,

нет, дефолтное значение стоит
31 авг 18, 10:52    [21659794]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Леонов Юрий
X11,

тоже самое. Никакой разницы((


Т.е. проблема не в сетке :)

Проверить и убедится, что к НД TOraQuery более ничего не подключено.
Можно даже новый кинуть на форму и проверить время открытия прямо в дизайне.
31 авг 18, 11:06    [21659845]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38569
похоже, что OraQuery выполняет запрос полностью,
а потом будет всего лишь фетчить из курсора число записей, равное указанному размеру буфера
31 авг 18, 11:22    [21659872]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
X11,

пробовал по разному. Для чистоты эксперимента создал новый проект, на форме только кнопка.
Жмакаем её, пытаемся выполнить запрос (сессия уже авторизирована). Результат отличается на доли секунд,
средний запрос на 400 тысяч записей выполняется около 10 секунд. Миллионники висят несколько минут.
31 авг 18, 11:36    [21659913]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
defecator
похоже, что OraQuery выполняет запрос полностью,
а потом будет всего лишь фетчить из курсора число записей, равное указанному размеру буфера


Так а я о чём... Почему он выполняет полностью, если FetchAll отключен?
31 авг 18, 11:37    [21659918]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 61
Леонов Юрий,
Зачем на клиенте такое количество записей?
Я понимаю, что это не относится к вашему вопросу, но все же...
31 авг 18, 11:43    [21659940]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Леонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.
31 авг 18, 11:46    [21659954]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
AJi
Леонов Юрий,
Зачем на клиенте такое количество записей?
Я понимаю, что это не относится к вашему вопросу, но все же...


Вот нужно)) Я сам не понимаю зачем, но нужно... Ну мое дело их вытянуть частями, а там пусть юзверь что хочет, то и делает с ними
31 авг 18, 11:50    [21659964]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 61
Леонов Юрий,

А вы не пробовали использовать другой Dataset? Может быть действительно дело в OraQuery, как уже писали выше? Попробуйте на каком-нибудь FireDac.
31 авг 18, 11:53    [21659974]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38569
JaDi
Леонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.

PL/SQL Developer использует компоненты DOA, а ТС утверждает, что они работают правильно
31 авг 18, 11:55    [21659978]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38569
AJi
Леонов Юрий,

А вы не пробовали использовать другой Dataset? Может быть действительно дело в OraQuery, как уже писали выше? Попробуйте на каком-нибудь FireDac.

А до конца сообщение было сложно дочитать ? ))
Леонов Юрий
Аналогично было реализовано на DOA-шных компонентах, все работало четко
31 авг 18, 11:56    [21659981]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
JaDi
Леонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.


Сам запрос в тестируемом варианте выглядит приблизительно так:
select поле,
         поле,
         ...
         поле
  from вьюха t
 where t.bank_n = :PBankN

никаких сортировок нету.
Выполняю в PSD как запрос - за полторы секунды показывает первые записи.
Если как тестовый скрипт с bind-переменными - секунд 5 думает, потом начинает мотать счетчик отфетченных записей
31 авг 18, 12:00    [21659998]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 61
defecator
А до конца сообщение было сложно дочитать ? ))

Мне вообще сложно читать ;-)

Ну если с другим датасетом все работало, то надо или смотреть настройки текущего или вернуться к тому, что было:)
31 авг 18, 12:01    [21660001]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 61
Леонов Юрий
Сам запрос в тестируемом варианте выглядит приблизительно так:
select поле,
         поле,
         ...
         поле
  from вьюха t
 where t.bank_n = :PBankN

никаких сортировок нету.
Выполняю в PSD как запрос - за полторы секунды показывает первые записи.
Если как тестовый скрипт с bind-переменными - секунд 5 думает, потом начинает мотать счетчик отфетченных записей

Ну если он пытается отфетчить все записи, то похоже, что в какой-то момент выполняется что-то типа dataset.last. Посмотрите дебаггером что там происходит.
31 авг 18, 12:04    [21660006]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
AJi

Ну если с другим датасетом все работало, то надо или смотреть настройки текущего или вернуться к тому, что было:)


Правда? А я тупой, не додумался... А чем мы здесь занимаемся, любезный?
По-моему как раз я и хочу понять, что не так в настройках текущего Датасета.
И если бы не необходимость, я бы, по вашему, стал бы ломать работающее на других компонентах приложение?
Вот реально, зачем писать от балды? Просто ветку марать?
31 авг 18, 12:06    [21660012]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
AJi
Ну если он пытается отфетчить все записи, то похоже, что в какой-то момент выполняется что-то типа dataset.last. Посмотрите дебаггером что там происходит.


Кого дебаггером посмотреть? PL/SQL Developer? У вас есть к нему дебаггер?
31 авг 18, 12:08    [21660017]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 61
Леонов Юрий
AJi
Ну если он пытается отфетчить все записи, то похоже, что в какой-то момент выполняется что-то типа dataset.last. Посмотрите дебаггером что там происходит.


Кого дебаггером посмотреть? PL/SQL Developer? У вас есть к нему дебаггер?

У вас проблема в PL/SQL Developer? :)
В Delphi запускаете отладку и смотрите, что делает OraQuery
31 авг 18, 12:13    [21660031]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
AJi,

походу вы читать написанное не умеете в принципе. Можете вдумчиво цепочку прочитать, чтобы не задавать глупые вопросы?
31 авг 18, 12:14    [21660034]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Можно еще полазить в настройках датасета и проверить параметры типа ScrollableCursor:
https://www.devart.com/odac/docs/devart.odac.toradatasetoptions.scrollablecursor.htm

А можно отладить датасет и проверить, срабатывает ли у него фетч:
http://www.sql.ru/forum/1175768/sdelat-otobrazhenie-dbgrid-pohozhim-kak-v-plsql-developer
31 авг 18, 12:14    [21660035]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
JaDi,

Спасибо за ссылки, буду изучать
31 авг 18, 12:29    [21660075]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 61
Леонов Юрий
JaDi,

Спасибо за ссылки, буду изучать


Ну я вам и предлагал отладить датасет и полазить в его настройках, только вы видимо читаете не так вдумчиво, как сами предлагаете:)
Не буду вас больше отвлекать своими глупыми вопросами:)
31 авг 18, 12:34    [21660093]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
AJi,

вы в Москве все такие нудные и спесивые? Лично от вас ни одного конструктивного предложения я не услышал, только общие фразы. Оберегайте и лелейте своё эго дальше.
31 авг 18, 14:50    [21660311]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
кстати, может это важно, при подключении к БД не используется клиент, а прямой доступ (Direct). Это может тормозить процесс?
31 авг 18, 15:47    [21660408]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
zinpub
Member

Откуда:
Сообщений: 214
Попробуй поставить
QueryRecordCount := True;
31 авг 18, 15:49    [21660420]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Леонов Юрий
кстати, может это важно, при подключении к БД не используется клиент, а прямой доступ (Direct). Это может тормозить процесс?

Нет. Но могут быть баги или проблемы с подключением (например, старые компоненты к новому серверу или наоборот) -- но это оооочень редко. У ODAC'ов всё очень хорошо и стабильно работает.
31 авг 18, 16:17    [21660466]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Леонов Юрий
X11,

пробовал по разному. Для чистоты эксперимента создал новый проект, на форме только кнопка.
Жмакаем её, пытаемся выполнить запрос (сессия уже авторизирована). Результат отличается на доли секунд,
средний запрос на 400 тысяч записей выполняется около 10 секунд. Миллионники висят несколько минут.


Если уже пробовал, то зачем включил в тему DevExpress?
31 авг 18, 16:19    [21660473]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Может проблема в запросе?
Попробуй что-то самое самое простое типа Select ID from table1.
31 авг 18, 16:22    [21660476]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
X11,

запрос простой и есть. На маленьком банке быстро вылетает, на большом - долго ждет. Хотя прога память не жрет как если бы все фетчило.
31 авг 18, 16:26    [21660485]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
zinpub
Попробуй поставить
QueryRecordCount := True;

И что это даст?
31 авг 18, 16:28    [21660489]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
А еще можно открыть в пл-девелопере список сессий, найти "зависшую" и посмотреть, чем же реально занимается сервер и клиент, на какой именно операции затык.
31 авг 18, 16:30    [21660494]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
zinpub
Member

Откуда:
Сообщений: 214
Леонов Юрий
zinpub
Попробуй поставить
QueryRecordCount := True;

И что это даст?


Это типа "дверями хлопал, по колесам стучал...", возможно он пытается кол-во записей узнать, что и вызывает фуллскан
31 авг 18, 16:35    [21660501]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
zinpub
Это типа "дверями хлопал, по колесам стучал...", возможно он пытается кол-во записей узнать, что и вызывает фуллскан

Если поставлю, то он и будет все фетчить, а сейчас - нет. Во время открытия датасета наблюдал за памятью, которая выделена под мое приложение. Слегка увеличилась (предположительно как раз на мои зарезервированные 300 записей) и все... Походу что-то внутри компонента или сессии происходит.
31 авг 18, 16:46    [21660529]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38569
Леонов Юрий
zinpub
Это типа "дверями хлопал, по колесам стучал...", возможно он пытается кол-во записей узнать, что и вызывает фуллскан

Если поставлю, то он и будет все фетчить.

фетчить на клиента он не будет,
а выполнит что-то вроде

select count(*) From
(твой запрос
)

но тоже весьма небыстро
31 авг 18, 18:01    [21660647]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
Если уж юзаешь DevExpress, то может стоит попробовать ServerMode?
31 авг 18, 18:53    [21660688]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38569
white_nigger
Если уж юзаешь DevExpress, то может стоит попробовать ServerMode?

вы там у себя никак не родите драйвер для ODAC
а ведь столько лет прошло
31 авг 18, 20:03    [21660776]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
defecator
white_nigger
Если уж юзаешь DevExpress, то может стоит попробовать ServerMode?

вы там у себя никак не родите драйвер для ODAC
а ведь столько лет прошло
Не помню статистику запросов на это. Большинству, видимо, хватает FireDac, dbExpress, Ado
1 сен 18, 01:37    [21660979]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
white_nigger
Если уж юзаешь DevExpress, то может стоит попробовать ServerMode?

так у него даже без сетки проблема
1 сен 18, 16:52    [21661264]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
X11
white_nigger
Если уж юзаешь DevExpress, то может стоит попробовать ServerMode?

так у него даже без сетки проблема
в сервермоде мы сами запрос на куски данных формируем. Возможно это решит проблему
1 сен 18, 19:27    [21661324]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
white_nigger
X11
пропущено...

так у него даже без сетки проблема
в сервермоде мы сами запрос на куски данных формируем. Возможно это решит проблему


Ну вот я взял к примеру TdxServerModeADOQueryDataSource. В свойстве Connection что должно быть? OraSession туда не подтягивается, значит мне нужно для этого открывать новое соединение с БД? Такое не устраивает, дописывать для себя компонент нет никакого желания.
3 сен 18, 08:35    [21662209]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Значит пробуй ограничивать SQL выборку с помощью "limit"
3 сен 18, 10:31    [21662355]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
X11
Значит пробуй ограничивать SQL выборку с помощью "limit"

в Оракле лимит появлятся только в 12-й версии насколько я знаю, но и это не панацея.
Отобрав лимитом я потом не смогу добраться до всех данных.

Судя по тому, что память приложение не жрет, компонент действительно не фетчит все записи, а только указанное количество.
Меня интересует почему он так долго открывает эти первые записи? В доках по компоненту я не нашел описания этой проблемы, может не там искал...
3 сен 18, 11:15    [21662415]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29045

мониторить не пробовал?

Posted via ActualForum NNTP Server 1.5

3 сен 18, 11:54    [21662458]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
Мимопроходящий
мониторить не пробовал?


Что конкретно вы имеете ввиду под мониторингом?
3 сен 18, 12:24    [21662496]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Леонов Юрий,

в оракле вместо лимита есть rownum с номером строки, по которому и можно фильтрацию делать
3 сен 18, 12:30    [21662505]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
JaDi
Леонов Юрий,

в оракле вместо лимита есть rownum с номером строки, по которому и можно фильтрацию делать


В том то и дело что мне нужен потенциально весь результат отбора. Дополнительных фильтраций не предусмотрено.
Все что нужно отфильтровать в гриде, будет приобщено к запросу и выполнено заново. Или я не о том говорю?
3 сен 18, 12:42    [21662522]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Леонов Юрий
В том то и дело что мне нужен потенциально весь результат отбора.


В этом-то и проблема. А нужно порциями, ограниченно.
3 сен 18, 13:21    [21662574]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Нужно автоматизировать или дать пользователю пагинатор, как на сайтах.

SELECT * FROM employees WHERE ROWNUM < 10;


SELECT * FROM employees WHERE ROWNUM > 10 and ROWNUM > 21;
SELECT * FROM employees WHERE ROWNUM > 20 and ROWNUM > 31;

и т.д.
3 сен 18, 13:23    [21662577]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
Этот вариант обсуждался и был отвергнут. Нужно чтобы показывалась быстро первая часть данных и при желании пользователя дофетчивались остальные данные блоками.
3 сен 18, 13:29    [21662591]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
zinpub
Member

Откуда:
Сообщений: 214
X11

SELECT * FROM employees WHERE ROWNUM > 10 and ROWNUM > 21;
SELECT * FROM employees WHERE ROWNUM > 20 and ROWNUM > 31;


и т.д.


Эээ... Так нельзя ROWNUM считается по строкам вошедшим в окончательный набор.

Только так как то

SELECT * FROM (SELECT e.*, e.ROWNUM RN FROM employees e) a WHERE RN >10 AND RN < 21
4 сен 18, 08:32    [21663409]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
жаль что devart не отслеживает этот вопрос.
Он бы смог рассказать что происходит в его компоненте
4 сен 18, 16:32    [21664360]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
А это уже интересно. Снял трассу, по ней вижу что на многомиллионнике EXEC выполняется 2 секунды, все остальное время идет
WAIT #139773341230232: nam='direct path write temp' ...

Но тут решил из запроса убрать бинд-переменную и поставить вместо нее значение. Результат - открывается набор и отображаются записи за секунду. Вот как это понимать?
7 сен 18, 09:38    [21667712]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Леонов Юрий
Но тут решил из запроса убрать бинд-переменную и поставить вместо нее значение.

это как?
7 сен 18, 14:04    [21668170]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
X11
Леонов Юрий
Но тут решил из запроса убрать бинд-переменную и поставить вместо нее значение.

это как?


Был запрос вида
select field1, field2, field3, ... fieldn
  from table t
where t.bank_n = :PBankN

который долго тупил на большом объеме данных.

Запрос вот такого вида
select field1, field2, field3, ... fieldn
  from table t
where t.bank_n = 333333

отрабатывает за секунду с небольшим.

Почему так - я не знаю, мож баг компоненты
7 сен 18, 16:49    [21668410]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5064
Леонов Юрий,

Prepare вызывал?
7 сен 18, 16:50    [21668413]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
vavan
Member

Откуда: Казань
Сообщений: 3106
Леонов Юрий
Почему так - я не знаю, мож баг компоненты
может статистика ушла вот он и задумался с косым планом. а тут hard parse прошел и с нормальным планом быстро достал
7 сен 18, 17:06    [21668426]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Gator
Member

Откуда: Москва
Сообщений: 13866
Леонов Юрий
Почему так - я не знаю, мож баг компоненты
Индекс по полю есть? Подключён?
План запроса смотрел? Статистика актуальна?
Сколько одновременных блокировок на таблице?
9 сен 18, 00:21    [21669107]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Леонов Юрий, это называется "запрос с параметрами"
9 сен 18, 13:16    [21669229]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
Скорее всего статистика и тормозит. В проекте используются активно материализованные вьюхи, при удалении данных из таблиц, входящих в нее, рушится статистика, приходится пересобирать. В этот момент я наверное и попал, что статистика не собрана была. Спасибо за подсказку
10 сен 18, 08:44    [21669530]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 378
Квейд
Леонов Юрий,
Prepare вызывал?
Если имеется ввиду выполнение параметризированого запроса, то да. Но после Prepare переопределял все параметры (DataType, ParamType).
10 сен 18, 09:48    [21669559]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Delphi Ответить