Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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 и заливаются в базу. Все нет проблем, даже клиентам ничего посылать ненадо все делается автоматически.



Страницы: 1 вся ветка

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

Наверх





Память: 0.48 MB
Время: 0.004 c
3-9096
jenbond
2002-02-05 10:45
2002.03.04
Проблема с запросом


7-9300
REL
2001-11-22 18:44
2002.03.04
Передача данных по модему (AT команды)


6-9251
Ohtori_Akio
2001-12-15 18:20
2002.03.04
TClientSocket (используемый внутри TServerThread.ClientExecute) не видит обрыва сессии


1-9191
besen-ok
2002-02-14 15:58
2002.03.04
как двум созданным в рантайме компонентам присвоить один и тот-же обрабитчик событый ?


6-9252
Angel_Ua
2001-12-15 13:20
2002.03.04
Как выключить комп по сети при помощи Делфи (Win2k)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский