Spec-Zone.ru › MySQL 9.2

10.2.5.1 Оптимизация операторов INSERT

Для оптимизации скорости вставки объедините множество мелких операций в одну большую операцию. В идеале вы создаёте одно соединение, отправляете данные для многих новых строк сразу и откладываете все обновления индексов и проверку целостности до самого конца.

Время, необходимое для вставки строки, определяется следующими факторами, где числа указывают приблизительные пропорции:

  • Установка соединения: (3)

  • Отправка запроса на сервер: (2)

  • Разбор запроса: (2)

  • Вставка строки: (1 × размер строки)

  • Вставка индексов: (1 × количество индексов)

  • Закрытие: (1)

Это не учитывает начальные накладные расходы на открытие таблиц, которые выполняются один раз для каждого одновременно выполняемого запроса.

Размер таблицы замедляет вставку индексов логарифмом N, предполагая индексы B-дерева.

Вы можете использовать следующие методы для ускорения вставок:

  • Если вы вставляете много строк с одного клиента одновременно, используйте операторы INSERT со множеством списков VALUES, чтобы вставлять несколько строк одновременно. Это значительно быстрее (в некоторых случаях во много раз быстрее), чем использование отдельных операторов INSERT для каждой строки. Если вы добавляете данные в непустую таблицу, вы можете настроить переменную bulk_insert_buffer_size, чтобы сделать вставку данных еще быстрее. См. Раздел 7.1.8, «Переменные системы сервера».

  • При загрузке таблицы из текстового файла используйте LOAD DATA. Это обычно в 20 раз быстрее, чем использование операторов INSERT. См. Раздел 15.2.9, «Оператор LOAD DATA».

  • Воспользуйтесь возможностью использования значений по умолчанию для столбцов. Вставляйте значения явно только тогда, когда вставляемое значение отличается от значения по умолчанию. Это уменьшает разбор, который должен выполнять MySQL, и улучшает скорость вставки.

  • См. Раздел 10.5.5, «Загрузка данных большими блоками для таблиц InnoDB» для советов, специфичных для таблиц InnoDB.

  • См. Раздел 10.6.2, «Загрузка данных большими блоками для таблиц MyISAM» для советов, специфичных для таблиц MyISAM.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/insert-optimization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API