Текущий архив: 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.45 MB
Время: 0.009 c