Spec-Zone.ru › MySQL 5.7

14.1.2 Рекомендованные практики для таблиц InnoDB

В этом разделе описаны лучшие практики при работе с таблицами InnoDB.

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

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

  • Отключите автоматическое подтверждение. Подтверждение сотен раз в секунду снижает производительность (ограничивается скоростью записи вашего устройства хранения).

  • Группируйте связанные операции DML в транзакции, помещая их между операторами START TRANSACTION и COMMIT. Хотя нежелательно слишком часто подтверждать, также не следует издавать огромные партии операторов INSERT, UPDATE или DELETE, которые выполняются часами без подтверждения.

  • Не используйте операторы LOCK TABLES. InnoDB может обрабатывать несколько сеансов, одновременно читающих и записывающих в одну и ту же таблицу, без ущерба для надежности или высокой производительности. Для получения исключительного доступа к записи набора строк используйте синтаксис SELECT ... FOR UPDATE, чтобы заблокировать только те строки, которые вы намерены обновить.

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

  • Оцените, будут ли ваши данные и шаблоны доступа использовать преимущества функций сжатия таблиц или страниц InnoDB. Вы можете сжать InnoDB таблицы без ущерба для возможностей чтения/записи.

  • Запустите сервер с параметром --sql_mode=NO_ENGINE_SUBSTITUTION, чтобы предотвратить создание таблиц с движками хранения, которые вы не хотите использовать.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-best-practices.html

Spec-Zone.ru

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