Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Вниз

Множественные изменения 


irq   (2002-02-06 13:05) [0]

Здравствуйте! В базу Interbase с клиента 1 нужно внести сразу много изменений (в одну таблицу - добавление записей, в другую - изменение записей). Все остальные клиенты должны ждать, пока клиент 1 не закончит работу. Как можно ускорить этот процесс? Заранее спасибо.



Johnmen   (2002-02-06 13:27) [1]

Обрабатывай событие отрисовки ячейки.



Johnmen   (2002-02-06 13:30) [2]

Прошу прощения - это из др.конфы :(



Fareader   (2002-02-06 13:42) [3]

Что значит ждать? Не могут достучаться к серверу или должны увидеть эту информацию, а потом подолжить работу?



irq   (2002-02-06 13:55) [4]

Сначала должны произойти изменения, а потом всем остальным клиентам будет разрешено работать. Поэтому множественный процесс изменения данных должны проходить как можно быстрее.



Johnmen   (2002-02-06 14:02) [5]

Интересно, а кто им запрещает ? :)



irq   (2002-02-06 14:05) [6]

Проблема не в том, кто и как им запрещает. Проблема в том, как сделать, чтобы множественные изменения быстро прошли



Fareader   (2002-02-06 15:01) [7]

Правильно споректировать БД и запросы на изменение. И что это вообще за згадочная система?



irq   (2002-02-06 15:22) [8]

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



Fareader   (2002-02-06 15:59) [9]

А сколько записей обновляется и добавляется и как долго это происходит?



Johnmen   (2002-02-06 16:05) [10]

...не в том, что это за система....Ну прямо тайны мадридского двора ;o))))))

делай 2 запроса : на изменение в табл.№1 и на добавление в т.№2



irq   (2002-02-06 16:10) [11]

Обновляется каждая запись в таблице 1, у которой значение поля 1 не равно вновь полученному. Сколько это в количественном измерении сказать трудно, будем считать пока, что в пределах 1 тысячи. Добавляющихся записей в ~3 раза меньше. Время пока не засекалось, но поскольку работа построена таким образом, что сохранение изменений по каждой записи передается серверу, то, думаю, что это не малое количество времени.



Fareader   (2002-02-06 16:15) [12]

Как данные обновлются с помощью Update на SQL или обход Query по всем записям? Это не объем для тормоза системы. Попробуй компоненты прямого доступа к IB - FIBPlus - на больших объемах они быстрее BDE.



Ura   (2002-02-06 16:17) [13]

Попробуй организовать систему через сообщения сервера
Пришел супер запрос на изменения -> Всем клиентам посылается сообщение ЖДАТЬ
Запрос на изменеия закончился в конце посылаем от сервера РАБОТА или ОБНОВИТЬ.
Плохо конечно что придеться часть логики делать в приложении но...



irq   (2002-02-06 16:38) [14]

Ura: заставлять ждать клиентов я с обриаюсь именно таким образом, спасибо. но проблема немного не в этом.

Fareader: если это не множественное изменение, то сохраняется текущая в query запись. можно ли с множественным изменением обойтись как-то без обхода query по всем записям?



yaJohn   (2002-02-06 17:08) [15]

Sentencia: Bistree hranimih procedur bivaut tol"ko hranimie proceduri.
Esli kritichen imenno prostoy ostalnih klientov, a ne obshaya proizvoditelnost" - zapolniaem dannimi vremennie tablici, a potom v odnoy tranzakcii perepravliaem danie iz nih v osnovnie. Eto 2 SQL zaprosa.
Vremennie chistim. Krivo, konechno, no v ramkah postavlenoy zadachi...



irq   (2002-02-06 17:24) [16]

yaJohn: kak osushestvit" sbros vsex dannyx v ramkax odnoj tranzakcii? ispol"zovat" UpdateSQL ili net?



Ura   (2002-02-06 17:30) [17]

Перечитал.
> сохранение изменений по каждой записи передается серверу
Т.е. логика перенесена на клиента сразу!!!
Сделай тожда кеширование. Обработай все. Можно построить индексы или удалить индексы. А потом одним махом синхронизируй...
1) Обработка в твоих руках
2) Нет промежуточных пересылок



erik   (2002-02-06 19:26) [18]

Как я понял пользователи не меняют данные. Тогда все просто, делается 3-х звенка в ClientDataSet заливаются новые данные с него считывают все клиенты. В отдельном треде делается clone с ClientDataSet и заливаются в базу. Все нет проблем, даже клиентам ничего посылать ненадо все делается автоматически.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.041 c
1-9238            greenrul              2002-02-14 19:34  2002.03.04  
Какая О.С. - идеальная для Delphi5 , если комп не особо мощен


1-9108            Igl                   2002-02-15 21:50  2002.03.04  
Как можно сделать эквалайзер?


6-9255            Rogue                 2001-12-18 13:24  2002.03.04  
Список всех файлов в директории через http


3-9077            dimich                2002-02-06 11:34  2002.03.04  
InterBase Server


6-9259            Yuri Btr              2001-12-18 10:36  2002.03.04  
Тест порта