Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
14-33795
Vlad Oshin
2003-08-22 11:23
2003.09.11
Молоко. Из-под коровы или из магазина? Вы за какое?


1-33568
Pirat
2003-08-28 12:15
2003.09.11
странный глюк TListView


14-33774
sasami737
2003-08-21 18:04
2003.09.11
Секция Initialization


9-33424
BANick
2003-03-07 16:15
2003.09.11
Люди помогите, Как загрузить JPG в Opengl


3-33444
mikh
2003-08-21 17:39
2003.09.11
Как поместить в CheckListBox результат sql-запроса select ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский