|
|
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Вобщем конструкция такая как в заголовке топика Delphi+ SQL+DBF, все нативное, коннектор стандартный. БД - сейчас уже весит 40Мб+, порядка 5000 строк, без ключей. База лежит в расшаренной папке в сети. Если запускать клиента локально на том же компьютере, где лежит и база, то все происходит достаточно быстро. Проблема в том, что при обращении к ней с клиентских тачек, при каждом запросе происходят жуткие фризы, по 5-10-15 секунд. При чем это не зависит от запроса: Запрос 1: Код: pascal 1. 2. 3. 4. Запрос 2: Код: pascal 1. 2. Оба запроса выполняются одинаково! Хотя в первом случае это может быть 1-10-50 строк, во втором запросе выводятся 4500-5000 строк. Может объясните где камушек прячется? От чего зависит время обработки? Ведь в первом варианте возвращаются буквально килобайты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:09:08 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Дбф -- локальная база. А значит для выборки клиенту каждый раз надо грузить всю базу. Скорее всего связь очень медленная, отсюда и задержки. Решения: - уменьшить размер базы; - улучшить качество связи; - перейти на клиент-серверную базу данных; - перенести базу на сервер и работать с ней через трехзвенку (когда на сервере стоит небольшой сервис, выдающий нужные данные клиентам -- см Datasnap). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:39:41 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
а qRegister это кто? какой компонент? как часто данные обновляются, может быть на старте программы просто копировать все к себе, если как правило программа работает на чтение? авторбыть 1-10-50 строк, во втором запросе выводятся 4500-5000 строк чтобы вернуть одну строку, ему нужно просканировать всю таблицу. Может быть, взять http://tdbf.sourceforge.net/ старый компонент, который все грузит в память, и бегать по ней, ногами а не с помощью sql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 14:21:01 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovа qRegister это кто? какой компонент? как часто данные обновляются, может быть на старте программы просто копировать все к себе, если как правило программа работает на чтение? авторбыть 1-10-50 строк, во втором запросе выводятся 4500-5000 строк чтобы вернуть одну строку, ему нужно просканировать всю таблицу. Может быть, взять http://tdbf.sourceforge.net/ старый компонент, который все грузит в память, и бегать по ней, ногами а не с помощью sql? qRegister - это TQuery. Вариант с копированием отпадает, потому что с базой работают 5-7 человек одновременно. Запросы на чтение поступают достаточно часто если человек шарится в режиме редактирования и просмотра базы. Сейчас гляну компонент. Спасибо! Я уже понял, что ему надо кушать каждый раз всю базу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 12:36:40 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Прогер123c dbf-базой можно работать в режиме клиент-сервер http://www.apollodb.com/ http://www.apollodb.com/using_arch.asp#t4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 13:19:36 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Валерий666Vladimir Baskakovа qRegister это кто? какой компонент? как часто данные обновляются, может быть на старте программы просто копировать все к себе, если как правило программа работает на чтение? пропущено... чтобы вернуть одну строку, ему нужно просканировать всю таблицу. Может быть, взять http://tdbf.sourceforge.net/ старый компонент, который все грузит в память, и бегать по ней, ногами а не с помощью sql? qRegister - это TQuery. Вариант с копированием отпадает, потому что с базой работают 5-7 человек одновременно. Запросы на чтение поступают достаточно часто если человек шарится в режиме редактирования и просмотра базы. Сейчас гляну компонент. Спасибо! Я уже понял, что ему надо кушать каждый раз всю базу... а он по любому, целиком. Это же просто текстовый файл, по сути, DBF. со всеми вытекающими отсюда тормозами. Нетранзакционностью..... как там сделать - Вася взял запись на редактирование, Петя взял , Вася отредактировал, Петя сверху.... а семен и вовсе удалил запись. в общем, если есть возможность по другому, залить данные в нормальную серверную БД, с нормальным SQL - лучше сделать. TQuery = BDE = Устарело много лет назад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 13:41:33 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
+1 за уход с DBF, особенно если учесть что у вас с базой еще и несколько человек работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 13:48:09 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Валерий666Вобщем конструкция такая как в заголовке топика Delphi+ SQL+DBF, все нативное, коннектор стандартный. БД - сейчас уже весит 40Мб+, порядка 5000 строк, без ключей. База лежит в расшаренной папке в сети. Если запускать клиента локально на том же компьютере, где лежит и база, то все происходит достаточно быстро. Проблема в том, что при обращении к ней с клиентских тачек, при каждом запросе происходят жуткие фризы, по 5-10-15 секунд. При чем это не зависит от запроса: Запрос 1: Код: pascal 1. 2. 3. 4. Запрос 2: Код: pascal 1. 2. Оба запроса выполняются одинаково! Хотя в первом случае это может быть 1-10-50 строк, во втором запросе выводятся 4500-5000 строк. Может объясните где камушек прячется? От чего зависит время обработки? Ведь в первом варианте возвращаются буквально килобайты... Ничего ты не сделаешь. Тебе давно говорили - используй клиент-серверные СУБД. Из бесплатных - хотя бы Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 14:51:43 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Прогер123Прогер123c dbf-базой можно работать в режиме клиент-сервер http://www.apollodb.com/ http://www.apollodb.com/using_arch.asp#t4 Стюардессу уже лучше не раскапывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 14:55:04 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, а как с поддержкой UTF-8 в DBF ? Не говоря о UTF-16 и UTF-32... Там ведь текстовые поля фиксированной длины, надо закладывать примерно в 2 раза больше для UTF-8 ? И скорее всего во время выборки / записи может потребоваться перекодировка "на лету" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 15:20:40 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
чччДВалерий666 Ничего ты не сделаешь. Тебе давно говорили - используй клиент-серверные СУБД. Из бесплатных - хотя бы Firebird.+1 Лет 10 уже нет смысла делать что-то новое на DBF. даже если там одна табличка с 1000 записей на 20 полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 17:43:00 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. Прошел месяц, база выросла как на грибах до 80Мб, и работать стало невыносимо в принципе. В итоге, (как мне показалось) самым безболезненным переносом оказался переход на MySQL. Теперь все летает:-) Надо наверное спрятать компоненты BDE вовсе из палитры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:01:28 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Отключить пакет dcl.BDEXXX.bpl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 10:07:00 |
|
||
|
Delphi+ SQL+DBF
|
|||
|---|---|---|---|
|
#18+
Валерий666самым безболезненным переносом оказался переход на MySQLОффтоп. Уже лет 5 подбиваю начальство на переход с MySQL на Firebird. Ибо после FB на MySQL смотреть тошно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 15:01:36 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=58&tid=2041850]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 535ms |

| 0 / 0 |
