Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     22 Aug 2002  16:43:34
 To : Igor S Chencov
 Subject : Re: DBI, DBD или MySQL?
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Igor S Chencov.
 
 EG>>> Есть таблица в MySQL на 8.5 миллионов строк, полгигабайта данных и еще
 EG>>> 370M индексов, по сути - большой лог для select'ов.
 EG>>> Выяснилось, что часть строк некорректна в смысле задачи, надо их
 EG>>> найти, вывести (и удалить, но это потом). Есть критерий, как искать,
 EG>>> выражается простым select'ом с where плюс небольшая post-обработка.
 EG>>> Таблица в MyISAM-файле.
 
 EG>>> Если пробую делать по man DBI (prepare, execute, fetch, fetch...),
 EG>>> то вижу, что execute длится очень долго, причем похоже на то, что
 EG>>> perl собирается всю базу в память засосать, прежде чем выйти из fetch.
 EG>>> Как ему отвыкнуть? Я бы хотел по одной строке обрабатывать, в цикле
 EG>>> fetch делая.
 
 EG>>> И кто виноват - subj?
 
 ISC> AC: Особенность DBD::MySQL, скорее всего, наведенная нижележащей
 ISC> библиотекой. AC: Документированная, AFAIR.
 
 ISC> Вряд ли ... Вернее сказать правильно, но ситуацию не проясняет :-)
 
 ISC> Все дело в execute - по этой команде любая клиент-серверная SQL база
 ISC> выполняет Select (т.е. практически ты делаешь select как из MySQL
 ISC> monitor) - а затем по fetch тебе выдаются порциями отобранные строки. 
 
 Так дело не в том, что селект всю базу шерстит, а в том, что нижележащая
 библиотека не может вернуться из своего execute, пока не вытащит все данные. А
 перловый fetch работает с тем, что уже вытащено.
 
 ISC> Выводов 2 -
 ISC> 1. Оптимизировать запрос (может добавлением нового индекса)
 ISC> 2. Использовать какой-нибудь фокус (если он есть) MySQL для
 ISC> последовательной обработки таблицы ...
 
 ISC> Bye !
 ISC> P.S. Сам я не специалист по MySQL - но для Oracle поведение DBD будет то же
 ISC> самое ...
 
 У оракла как раз fetch из базы данные тянет, по кусочкам.
 
 -- 
 Artem Chuprina
 Communiware.net
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: DBI, DBD или MySQL?   Artem Chuprina   22 Aug 2002 14:25:14 
 Re: DBI, DBD или MySQL?   Igor S Chencov   22 Aug 2002 15:58:49 
 Re: DBI, DBD или MySQL?   Artem Chuprina   22 Aug 2002 16:43:34 
Архивное /ru.perl/14454d994963a.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional