|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor S Chencov 2:5020/400 22 Aug 2002 15:58:49 To : Artem Chuprina Subject : Re: DBI, DBD или MySQL? -------------------------------------------------------------------------------- Artem Chuprina <ran@ice.ru> wrote: AC: Здравствуй, Eugene Grosbein. 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? AC: Особенность DBD::MySQL, скорее всего, наведенная нижележащей библиотекой. AC: Документированная, AFAIR. Вряд ли ... Вернее сказать правильно, но ситуацию не проясняет :-) Все дело в execute - по этой команде любая клиент-серверная SQL база выполняет Select (т.е. практически ты делаешь select как из MySQL monitor) - а затем по fetch тебе выдаются порциями отобранные строки. Выводов 2 - 1. Оптимизировать запрос (может добавлением нового индекса) 2. Использовать какой-нибудь фокус (если он есть) MySQL для последовательной обработки таблицы ... Bye ! P.S. Сам я не специалист по MySQL - но для Oracle поведение DBD будет то же самое ... -- -= Игорь Ченцов - системный администратор | =- -= E-mail chs<at>aquilon.ru | АКВИЛОH =- -= г. Архангельск | =- --- ifmail v.2.15dev5 * Origin: Internet-Arkhangelsk Company (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/45964da69b9e.html, оценка из 5, голосов 10
|