Задать вопрос

Как оптимизировать PDO для работы с MySql таблицами в 45 000 000 строк?

У меня есть таблица в 45млн. строк. Мне ее нужно разбить по некоторому полю в котором содержится год внесения записи (всего там примерно 6-7 лет, не помню точно, количество записей на один год всегда разное). Делаю я все это с помощью PDO, и памяти не хватает. Все хаки которые нарыл в интернете не помогли. php.ini уже настраивал, и со стороны скрипта, и со стороны собственно конфига. Можете что-то подсказать в плане решения подобной проблемы? Увеличить количество памяти я к сожалению не имею возможности, максимум что - могу попробовать поднять memcached, но не уверен что это лучшая идея, с одной строкой ответа приходит довольно много информации. С буферизацией запросов тоже пробовал химичить, но
->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false)
не помогает. Подскажите, как вы поступаете в таких случаях?
  • Вопрос задан
  • 3012 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
uakoB
@uakoB Автор вопроса
курсор не получается сделать потому что насколько я понял в драйвере MySql недоступен курсор. ну, по крайней мере так писали в этих ваших интернетах)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@s1dney
Вы что, пытаетесь селектом запросить все 45кк строк, что там памяти не хватает?
Используйте limit и курсор.
Ответ написан
Комментировать
disc
@disc
веб-разработчик
А можете показать запрос как вы это делаете?
Возможно я чего-то не понял в вопросе, но вам что действительно надо одновременно выводить 45 млн строк на страницу?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽