Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.11;
Скачать: CL | DM;

Вниз

ZeosDBO   Найти похожие ветки 

 
Доброжелатель ©   (2003-08-22 10:43) [0]

Имеется база в MySQL. Доступ к ней происходит через ZeosDBO 6.0.12-stable. База данных содержит около 12 млн. записей и ежедневно пополняется. Записи вносятся через компоненту TZQuery, к которой прикреплен TZUpdateSQL. При открытии TZQuery (установлении свойства Active в True) происходит полная загрузка базы в память :(
Кто-нибудь может подкинуть реальный совет, как сделать, чтобы база не грузилась в память?
С уважением, Доброжелатель


 
Vlad ©   (2003-08-22 11:07) [1]

Чесно скажу, по Zeos не спец, но в DOA напр. есть такая проперть, как QueryAllRecords. Так вот если ее поставить False, то будут отбираться только часть данных (напр. видимая в DBGrid"е), а затем, по мере скроллинга данные подкачиваются с сервера. Есть примерно такая же возможность и в ADO.
Думаю, что и у вас можно найти нечто подобное.


 
Nikolay M. ©   (2003-08-22 11:15) [2]


> открытии TZQuery (установлении свойства Active в True) происходит
> полная загрузка базы в память

Хм. А чего ты хотел добиться, устанавливая Active в True?
Использовать просто INSERT INTO table VALUES () религия не позволяет?

ПС
12 млн... клева... :)


 
Доброжелатель ©   (2003-08-22 11:21) [3]

To Nikolay M.:
Так а представь, что в день по 250 тыс. записей вливается. При использовании напрямую операции INSERT - пустая трата времени. При присоединении к TZQuery компоненты TZUpdateSQL, к запросу можно обращаться как к таблице (к сожалению таблиц в ZeosDBO 6.x нет), т. е. можно использовать
...
ZQuery.Append;
ZQuery.Fields[0].AsString:="значение";
ZQuery.Post;
...
Работает быстрее, чем через INSERT. Хотя, если никто не придумает способа, чтобы не засорять память, придется пользоваться этой командой напрямую :)


 
Nikolay M. ©   (2003-08-22 11:28) [4]


> к сожалению таблиц в ZeosDBO 6.x нет

У меня 5.3 - там есть.


> ...
> Работает быстрее, чем через INSERT.

Да ну?

Тогда в твоем случае можно рекомендовать следующее (по крайней мере мы так делаем): создаешь файл а-ля mysqldump:
INSERT INTO ... VALUES ...;
INSERT INTO ... VALUES ...;
Если на сервере с mysql-сервером есть НТТР-сервер (а он наверняка там есть), то создаешь там РНР или любой другой скрипт, который будет принимать предварительно сгенеренный тобой и залитый туда файлик и выполнять одну-единственную шеловскую команду mysql -uXX -pXX -f mydb < insert.sql
Все. Работает быстро.


 
Доброжелатель ©   (2003-08-22 11:40) [5]

To Nikolay M.:
Спасибо, попробую :)



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

Текущий архив: 2003.09.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
1-33683
loewa
2003-08-29 07:53
2003.09.11
ShellTreeView(samples)


11-33534
Alexander
2002-12-29 21:47
2003.09.11
Как реализовать такой код на KOL?


1-33655
qwerty2
2003-09-01 16:39
2003.09.11
Как избавиться от песочных часов в курсоре


6-33702
odyssey
2003-07-10 09:56
2003.09.11
TWebBrowser


4-33841
Павел
2003-07-12 21:35
2003.09.11
Курсор над приложением