Storage engines

Storage engines в MySQL.

Иногда мне задают вопрос, что такое storage engine в MySQL? Storage engine в MySQL – это специальные компоненты (можно сказать еще драйверы), которые позволяют выполнять различные SQL операции на таблицах разного типа. Storage engines часто переводят на русский, как “движки”. Хотя лично мне такой перевод не нравится. Существует множество различных storage engines, созданных как разработчиками классического MySQL сервера, так и сторонними разработчиками. В настоящее время, начиная с версии сервера 5.5, в качестве storage engine по умолчанию используется InnoDB. До этого по умолчанию использовался MyISAM.

Увидеть какие storage engine поддерживаются в СУБД, как было сказано в разделе “Transactional Storage Engines в MySQL“, можно с помощью команды SHOW ENGNES.

Проверить какой storage engine установлен по умолчанию или используется в той или иной таблице Вы можете следующими способами:

  • Посмотреть значение переменной storage_engine, которая определяет “движок” по умолчанию: SELECT @@storage_engine;
  • Командой SHOW CREATE TABLE:

    mysql> SHOW CREATE TABLE mytable\G
    *************************** 1. row ***************************
    Table: mytable
    Create Table: CREATE TABLE `mytable` (

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)

  • Командой SHOW TABLE STATUS:

    mysql> SHOW TABLE STATUS LIKE ‘mytable’\G
    *************************** 1. row ***************************
    Name: mytable
    Engine: InnoDB

  • С помощью запроса к INFORMATION_SCHEMA, как было описано в разделе “Использование команды SELECT для работы с INFORMATION_SCHEMA“.

Возможно также изменить storage engine по умолчанию или указать другой при создании таблиц. Для этого можно использовать следующие способы:

  •  Установить в файле конфигурации, который используется при старте сервера:

    [mysqld]
    default-storage-engine=MYISAM

  • Используя команду SET на уровне клиентской сессии:

    SET @@storage_engine=InnoDB;

  • Непосредственно в команде CREATE TABLE:

    CREATE TABLE mytable (id int) ENGINE=InnoDB;

Следует отметить, что если таблица создается без явного указания опции ENGINE, в качестве storage engine будет взято значение установленное по умолчанию. Посмотреть его можно через системную переменную storage_engine, как указано выше.

Наиболее распространенными storage engine, которые разработаны разработчиками MySQL сервера, являются InnoDB, MyISAM, MEMORY.

Leave a Reply

Your email address will not be published. Required fields are marked *