Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
14-33791
nikkie
2003-08-22 17:22
2003.09.11
Надо создать базу Oracle9i из командной строки


1-33602
pasha_golub
2003-09-01 15:20
2003.09.11
Вывод текста на грид


14-33755
Экселенц
2003-08-24 07:26
2003.09.11
бесплатный helpmaker


6-33709
KPP
2003-07-09 10:28
2003.09.11
FindFirstChangeNotification на новеле


14-33808
MVova
2003-08-22 12:03
2003.09.11
Задачка про чай.




   Наверх