18.1 Настройка движка хранения
При создании новой таблицы можно указать используемый движок хранения, добавив опцию ENGINE к оператору CREATE TABLE:
-- ENGINE=INNODB not needed unless you have set a different
-- default storage engine.
CREATE TABLE t1 (i INT) ENGINE = INNODB;
-- Simple table definitions can be switched from one to another.
CREATE TABLE t2 (i INT) ENGINE = CSV;
CREATE TABLE t3 (i INT) ENGINE = MEMORY;
Если опция ENGINE опущена, используется движок хранения по умолчанию. По умолчанию используется движок InnoDB в MySQL 9.2. Движок по умолчанию можно указать, используя опцию запуска сервера --default-storage-engine, или установив опцию default-storage-engine в файле конфигурации my.cnf.
Движок хранения по умолчанию для текущей сессии можно установить, задав переменную default_storage_engine:
SET default_storage_engine=NDBCLUSTER;
Движок хранения для TEMPORARY таблиц, созданных с помощью CREATE
TEMPORARY TABLE, можно задать отдельно от движка для постоянных таблиц, установив default_tmp_storage_engine, как при запуске, так и во время работы.
Для преобразования таблицы из одного движка хранения в другой используйте оператор ALTER TABLE, который указывает новый движок:
ALTER TABLE t ENGINE = InnoDB;
См. Раздел 15.1.21, «Оператор CREATE TABLE» и Раздел 15.1.9, «Оператор ALTER TABLE».
Если вы попытаетесь использовать движок хранения, который не скомпилирован или скомпилирован, но деактивирован, MySQL вместо этого создаст таблицу с использованием движка хранения по умолчанию. Например, в настройках репликации, возможно, ваш сервер-источник использует таблицы InnoDB для максимальной безопасности, но реплицированные серверы используют другие движки хранения для скорости за счет долговечности или конкурентности.
По умолчанию, каждый раз, когда CREATE TABLE или ALTER TABLE не могут использовать движок хранения по умолчанию, генерируется предупреждение. Чтобы предотвратить путаницу и непреднамеренные действия, если нужный движок недоступен, включите режим SQL NO_ENGINE_SUBSTITUTION. Если нужный движок недоступен, эта настройка вместо предупреждения выдаст ошибку, и таблица не будет создана или изменена. См. Раздел 7.1.11, «Режимы SQL сервера».
MySQL может хранить индексы и данные таблицы в одном или нескольких других файлах, в зависимости от движка хранения. Определения таблиц и столбцов хранятся в словаре данных MySQL. Отдельные движки хранения создают любые дополнительные файлы, необходимые для таблиц, которые они управляют. Если имя таблицы содержит специальные символы, имена файлов таблицы содержат закодированные версии этих символов, как описано в Разделе 11.2.4, «Сопоставление идентификаторов с именами файлов».
© 2025 Oracle
Licensed under the GPLv2 License.