В нашем PHP-коде есть цикл, который вставляет строки в таблицу. e.g.:
while ($info = mysql_fetch_assoc($someQuery)) {
mysql_query("INSERT INTO X (i,j) VALUES ($info['ii'],$info['jj'])");
}
Это было хорошо несколько месяцев назад, потому что цикл повторялся бы только несколько раз. Однако из-за того, что наш сайт получает больше трафика, этот цикл теперь иногда повторяется 1000 и более раз. Таблица имеет некоторые издержки ( 4,305 КиБ ), и SELECT из этой таблицы появляются в MySQL slow-log , вероятно потому, что им приходится ждать длинный список вставок для снятия замков?
Как мне оптимизировать код, чтобы он лучше масштабировался?
Некоторые вещи, которые я решил попробовать:
- INSERT DELAYED - Нужно разобраться в этом. Может ли это помочь?
- Попробуйте вставить несколько строк в одном запросе. Но какой предел я должен установить? 50, 500, 1000?