Являются ли объемные вставки менее интенсивными в системе, чем множественные одиночные вставки? - PullRequest
1 голос
/ 22 августа 2011

У меня около 50 сценариев на сервере, вставляющих от 3 до 6 наборов данных каждую секунду. Я обнаружил, что MySQL, в свою очередь, перегружает все системные ресурсы, и иногда он сбивает сервер.

Я думал, что если я соберу 5-минутные запросы и сделаю 1 массовую вставку на скрипт, это поможет, но поможет ли это с небольшим или большим отрывом? У кого-нибудь есть опыт перехода на массовые вставки?

Мои таблицы - MyISAM (могут изменить их, если это необходимо и если я не потеряю данные). Версия MySQL: 5.1.56

Спасибо

Ответы [ 3 ]

2 голосов
/ 22 августа 2011

Массовая вставка намного быстрее.Но в этом случае вы должны заботиться о длине запроса;длина должна быть меньше max_allowed_packet - максимальный размер одного пакета или любой сгенерированной / промежуточной строки .

2 голосов
/ 22 августа 2011

Это будет явная заметная разница.При массовом изменении вы переходите от многих открытых баз данных, запросов, близких к одному открытому, множеству запросов и закрытым.Если вы хотите еще больше ограничить нагрузку, просто запишите многие из них в плоский файл и запустите процесс задания cron, который будет загружен в базу данных в непиковое время

0 голосов
/ 22 августа 2011

Некоторые предложения:

  • Делать объемные вставки, например INSERT INTO ... VALUES (...),(...),(...);
  • Сделать хранимые процедуры как массовые вставки. Таким образом, вы вставляете в наборы из 10 или 20. bulk(a1,a2,a3,b1,b2,b3);
  • Взломать: Сделать стол типа Blackhole. Вставить хранимой процедурой. Создайте триггер на этой таблице, который просто вставляет в реальную таблицу. (Работает и очень быстро!)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...