Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать мгновенно? [D7, MySQL]


Страницы:   1 2 3

FBuilder ©   (2008-01-16 13:11:00) 

Есть база данных удаленное на по локальной сетке.
Есть таблица (SQL запрос), которая отображает ее состояние.

табилца отображается пользователю - он ее видит, может по ней пробежаться.
записей порядка 100.

проблема: табилца обновляется по такймеру - ра зв 3 секунды.
сейчас получается что это все занмиает около 250 при апдейте :( У пользователя соответственно гладкого перемещения по таблице - нет - при обновлении все замирает и скрол - дергается.

Вопрос: как добиться более гладкого хождения пользователя по обновляемой таблице?

Mysql 4.0.x, DBExpress, dbx4mysql.dll

?


Kolan   (2008-01-16 14:55:00) [41]

> 1. DisableControls/EnableControls отключают отрисовку при
> обновлении данных, что заведомо ускоряет процесс.

Все равно будет затык у пользователя, имхо надо запрос оптимизоровать… Или UI менять…


Skyle   (2008-01-16 14:52:00) [42]


> FBuilder   (16.01.08 14:41) [15]
> >Использовать DisableControls/EnableControls и клиентский
> курсор.
>
> Пробовал. Клиентский курсор - нет - это как на DBExpress
> рабоать точно будет?

А я не пользовался ни разу этими компонентами, не знаю какая у них логика.

Смысл был таков
1. DisableControls/EnableControls отключают отрисовку при обновлении данных, что заведомо ускоряет процесс.
2. Использование клиентского курсора нужно понимать как "фетчить все записи на клиента и там уже показывать".

Если в этом случае всё тормозит, то проблема не в клиенте. Это либо запрос, либо подтормаживает сервер, либо сеть. Соответственно можно будет попробовать изменить подход к запросу.

Я например не смогу даже в течение минуты вникать в 100 записей, обновляющихся раз в 3 секунды, чесслово.


FBuilder   (2008-01-16 14:41:00) [43]

>Использовать DisableControls/EnableControls и клиентский курсор.

Пробовал. Клиентский курсор - нет - это как на DBExpress рабоать точно будет?


Kolan   (2008-01-16 14:05:00) [44]

> только что-то с этой сменй дата сета пока трабла небольшая…

А как я трабла поменял и се…


Skyle   (2008-01-16 14:04:00) [45]

Использовать DisableControls/EnableControls и клиентский курсор.


FBuilder   (2008-01-16 14:04:00) [46]

Спасибо!

вот сейчас что-то подобное и пытаюсь сделать...
только что-то с этой сменй дата сета пока трабла небольшая...

ну а locate - да - немного протормаживает - но не так сильно как все остальное :)


Kolan   (2008-01-16 14:00:00) [47]

> там пару джоинов есть

Имхо тут основная проблемма. Может тебе завесли таблицу для мониторинга. В неё данные будут из осн. таблиц добавлять триггеры.
А запрос будет брать уже из этой таблицы. Будет быстрее.

> меня инетесует как теперь подменить так, чтобы я сначала
> эти данные получал в прогу, а потом мгновенно выводил в
> табилцу…

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

Подключать надор динамически.
То есть два дата сета с одним работает пользователь, второй по таймеру открываешь и меняешь DataSet у DataSource.
Надо будет еще и запомнить где курсор у пользователя был и назад выставить…

Тут скорее всего будет мигание неприятное…


FBuilder   (2008-01-16 13:53:00) [48]

Запрос я уже оптимизировал - все что мог - сделал - там пару джоинов есть - но индексы по ним уже стоят.

меня инетесует как теперь подменить так, чтобы я сначала эти данные получал в прогу, а потом мгновенно выводил в табилцу...


Kolan   (2008-01-16 13:49:00) [49]

> Заказы в такси.

А запрос у тя какой? может там какой нить бешеный запрос, а ты делаешь SELECT * FROM <table>.
Для оперативного мониторинга можно ограничить набор полей(2-3). На что пользователь смотрит листая грид?


FBuilder   (2008-01-16 13:46:00) [50]

.refresh
.execsql
по разному пробовал - результат почти одинаковый

Заказы в такси.


Kolan   (2008-01-16 13:43:00) [51]

Контрукция у меня такая:
А как ты обновляешь?

Почему так часто меняются, что там?


FBuilder   (2008-01-16 13:38:00) [52]

> Потом хорошо бы не раз в три секунды, а тогда, когда данные действительно обновились…

Думал - варианто проверить когда они обновились практически нет (реальных)


FBuilder   (2008-01-16 13:37:00) [53]

250 мсек

>Тогда может при обновлении поступать так — сначала затягивать все данные а пользователь путь пока видит старые, как только все получено обновлять ?

можно так поступить:
Но ка кэто сделать на локальном DBGrid

Контрукция у меня такая:
DBGrid <- DataSource <- DataSet <- connection

вставить промежуточну таблицу?


Kolan   (2008-01-16 13:35:00) [54]

Потом хорошо бы не раз в три секунды, а тогда, когда данные действительно обновились…


Kolan   (2008-01-16 13:34:00) [55]

> Не вариант — клиент просит еще чаще :(

Чтоже это кто-то вводит данные раз в 3 секунды?
Мгновенно ессно не получится никогда.

Есть несколько предложений.
1.  «все занмиает около 250» секунд?

Тогда может при обновлении поступать так — сначала затягивать все данные а пользователь путь пока видит старые, как только все получено обновлять ?


FBuilder   (2008-01-16 13:28:00) [56]

Не вариант - клиент просит еще чаще :(


Kolan   (2008-01-16 13:25:00) [57]

> проблема: табилца обновляется по такймеру — ра зв 3 секунды.

Обновлять реже?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо