Главная страница
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.013 c
1-33619
Olegka
2003-08-29 17:57
2003.09.11
Работа с колонтитулами в Word


14-33737
Мазут Береговой
2003-08-23 11:18
2003.09.11
***


1-33591
Anonimus
2003-08-27 13:01
2003.09.11
Компонент StringGrid


14-33732
HolACost!
2003-08-25 10:41
2003.09.11
Можноли заставить мастдай работать с двумя момедами одновременно


1-33674
VISA
2003-08-29 16:20
2003.09.11
OnMouseMove на ScrollBar