Если ваши запросы Вставка, страница 7.2.19. Speed of INSERT Statements руководства MySQL дает две интересной информации, в зависимости от того, являются ли вашим используя transactionnal двигатель или нет:
При использовании без transactionnal двигателя:
Для ускорения операций INSERT, которые являются , выполненных с несколькими операторами для столов без транзакций, заблокируйте свои таблицы .
Это выгодно, так как производительность индекс буфер сбрасывается на диск только один раз, после того, как все операторы INSERT имеют завершены. Как правило, было бы множество флагов индексного буфера, так как есть Операторы INSERT. Явные блокировки заявления не нужны, если вы можете вставить все строки с одним INSERT.
И с transactionnal двигателя:
Чтобы получить быстрые вставки для транзакционных таблиц, вы должны использовать START TRANSACTION и COMMIT вместо из LOCK TABLES.
Так что я предполагаю, что использование транзакций может быть хорошей идеей - но я полагаю, что это может зависеть от нагрузки на вашем сервере и существует ли многократное использование одной и той же таблицы в тот же момент, и все это ...
Есть подробную информацию на странице я связан с, так что не стесняйтесь читать его ;-)
И, если вы делаете update statements:
Другой способ получить быстрые обновления - задержка обновлений, а затем сделать много обновлений в строке позже. Выполнение нескольких обновлений происходит намного быстрее, чем , делая одно за раз, если вы заблокируете таблицу .
Итак, я предполагаю, что можно сказать то же самое, что и для вставок.
КСТАТИ: чтобы быть уверенным, вы можете попробовать оба решения, бенчмаркинг их microtime
, на стороне PHP, например ;-)
Большое спасибо за информацию, я думаю, мне просто нужно попробовать и сравнить. – jeroen
Я полагаю, что так ^^ Сообщите нам о результатах ;-) Это может заинтересовать других людей! И, кстати, другое решение заключалось бы в том, чтобы использовать один запрос на вставку для одновременного создания нескольких вставок, уменьшая общее количество запросов - немного сложнее кодировать, но я видел большие улучшения с этим, поскольку это означает меньше вызовы с одного сервера на другой. –
Да, сокращение числа запросов было бы лучшим решением, но, как я уже упоминал Джеймсу Блэку, я никогда не пробовал это с INSERT ON DUPLICATE KEY UPDATE, даже не знаю, возможно ли это. – jeroen