MySQL 5.1 утечка памяти при обработке большого количества строк

#php #mysql

#php #mysql

Вопрос:

У меня есть скрипт PHP 5, который перебирает таблицу MySQL (приблизительно 600 000 строк) и для каждой строки поддерживает ок. 16 других таблиц обобщенной информации на основе столбцов в каждой строке исходной таблицы (это делается путем проверки, существует ли итоговая строка, и если да, обновите ее, иначе вставьте).

Проблема в том, что по мере продолжения процесса mysqld.exe процесс съедает все больше и больше памяти, пока не исчерпает систему и не приведет к сбою PHP-скрипта. PHP-скрипт не набирает память, только mysqld.exe процесс. В PHP-скрипте каждое чтение из таблицы является free’d ( $resultset->free() инструкция), поэтому все должно быть хорошо.

Комментарии:

1. Вам придется показать некоторый код… какие запросы вы выполняете, какие временные таблицы или переменные и т.д… Скорее всего, ваш процесс может быть оптимизирован для суммирования всего сразу, а не по строке за раз.

2. Вы также должны посмотреть / опубликовать свой my.cnf (или, может быть, это my.ini в Windows). Там есть ограничения по памяти.

Ответ №1:

Вы уверены, что не достигаете максимального времени выполнения? Насколько быстр ваш запрос, когда вы выполняете его напрямую?

Комментарии:

1. Спасибо за ответы — это был не MySQL, а COM-вызов стороннего драйвера, который использовал память — моя ошибка 🙂

Ответ №2:

Спасибо за ответы — это был не MySQL, а COM-вызов стороннего драйвера, который использовал память — моя ошибка 🙂