Типы таблиц в MySQL
В MySQL возможно применять несколько типов таблиц:
- MyISAM;
- InnoDB;
- MERGE;
- ARCHIVE;
- CSV;
- FEDERATED;
- EXAMPLE;
- MEMORY (HEAP);
- BLACKHOLE;
- IBMDB2I.
Чтоб узнать какие типы таблиц поддерживаются в MySQL нужно выполнить запрос:
MyISAM
Тип таблиц MyISAM применяется в MySQL по умолчанию.
Пример создания таблицы типа MyISAM:
( isam_ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
isam_Name CHAR(100)) ENGINE = MyISAM;
т.к. MyISAM применяется по умолчанию, то ENGINE = MyISAM можно было опустить, но делать так не рекомендуется, ведь могут измениться правила и по умолчанию будут использовать иной тип таблиц.
Получаем в каталоге базы данных:
Создав таблицу типа MyISAM, мы получили три файла. Первый файл isamtable.frm содержит информацию о структуре таблицы. Файл isamtable.MYD (MYData) хранит данные таблицы, сейчас в таблице нет данных. Третий файл isamtable.MYI (MYIndex) хранит индексы таблицы.
Таблицы типа MyISAM не поддерживают транзакции,. Блокировка осуществляется на уровне таблицы, а не строки, т.е. когда строка изменяется (update) или новая строка вставляется (insert) блокируется вся таблица до завершения данной операции. Нет поддержки внешних ключей. Колонка с AUTO_INCREMENT может быть только одна.
Допускается null в индексированной колонке. Возможно использование разных кодировок в колонках одной таблицы. В индексном файле имеется флаг, фиксирующий правильно ли была закрыта таблица, если нет, то при следующем открытии таблицы сервер будет её восстанавливать.
MyISAM хорошо работает с запросами select. MyISAM работает быстро и потребляет мало системных ресурсов.
InnoDB
Пример создания таблицы типа InnoDB:
( inno_ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
inno_Name CHAR(100)) ENGINE = InnoDB;
Получаем:
Создан файл innotable.frm, в котором содержится информация о структуре таблицы. Данные таблиц такого типа храняться общих файлах, а не каждая таблица в отдельном файле, как это делается для MyISAM.
Таблицы типа InnoDB поддерживают транзакции. Можно использовать внешние ключи. Блокировка осуществляется на уровне строки, а не таблицы, как это делается для MyISAM.
Таблицы InnoDB имеют высокую производительность. Операции вставки (insert) и обновления (update) выполняются с большой скоростью. У типа InnoDB нет ограничений на размер таблицы. В случае сбоя в работе таблица InnoDB воостановится автоматически. Select работает быстрее в MyISAM, чем в InnoDB.
ARCHIVE
Тип таблиц ARCHIVE применяется для хранения в сжатом виде больших объемов данных без индексов. Нет предела на объём хранимой информации. Внешние ключи не поддерживаются. Транзакции не поддерживаются. Блокировка на уровне строки.