MySQL

Типи таблиць MySQL

В MySQL можливо застосовувати декілька типів таблиць:

  • MyISAM;
  • InnoDB;
  • MERGE;
  • ARCHIVE;
  • CSV;
  • FEDERATED;
  • EXAMPLE;
  • MEMORY (HEAP);
  • BLACKHOLE;
  • IBMDB2I.

Щоб дізнатися, які типи таблиць підтримуються MySQL потрібно виконати запит:

show engines

MyISAM

Тип таблиць MyISAM застосовується в MySQL за замовчуванням.

Приклад створення таблиці типу MyISAM:

CREATE TABLE isamTable
( isam_ID UNSIGNED INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
isam_Name CHAR(100)) ENGINE = MyISAM;

т. к. MyISAM застосовується за умовчанням, то ENGINE = MyISAM можна було опустити, але так робити не рекомендується, адже можуть змінитися правила і за замовчуванням будуть використовувати інший тип таблиць.

Отримуємо в каталозі бази даних: MyISAM

Створивши таблиці типу MyISAM, ми отримали три файлу. Перший файл isamtable.frm містить інформацію про структуру таблиці. Файл isamtable.MYD (MYData) зберігає дані таблиці, зараз в таблиці немає даних. Третій файл isamtable.MYI (MYIndex) зберігає індекси таблиці.

Таблиці типу MyISAM не підтримують транзакції. Блокування здійснюється на рівні таблиці, а не рядки, тобто коли рядок змінюється (update) або нова рядок вставити (insert) блокується вся таблиця до завершення даної операції. Немає підтримки зовнішніх ключів. Колонка з AUTO_INCREMENT може бути тільки одна.

Допускається null індексованою колонці. Можливе використання різних кодувань в колонках таблиці. В індексному файлі є прапор, фіксуючий правильно була закрита таблиця, якщо ні, то при наступному відкритті таблиці сервер буде її відновлювати.

MyISAM добре працює з запитами select. MyISAM працює швидко і споживає мало системних ресурсів.

Вгору

InnoDB

Приклад створення таблиці типу InnoDB:

CREATE TABLE innoTable
( inno_ID UNSIGNED INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
inno_Name CHAR(100)) ENGINE = InnoDB;

Отримуємо: InnoDB

Створений файл innotable.frm, в якому міститься інформація про структуру таблиці. Дані таблиць такого типу зберігаються загальних файлах, а не кожна таблиця в окремому файлі, як це робиться для MyISAM.

Таблиці типу InnoDB підтримують транзакції. Можна використовувати зовнішні ключі. Блокування здійснюється на рівні рядки, а не таблиці, як це робиться для MyISAM.

Таблиці InnoDB мають високу продуктивність. Операції вставки (insert) та оновлення (update) виконуються з великою швидкістю. У типу InnoDB немає обмежень на розмір таблиці. У разі збою В роботі таблиця InnoDB воостановится автоматично. Select працює швидше в MyISAM, ніж у InnoDB.

ARCHIVE

Тип таблиць ARCHIVE застосовується для зберігання в стислому вигляді великих обсягів даних без індексів. Немає межі на обсяг збереженої інформації. Зовнішні ключі не підтримуються. Транзакції не підтримуються. Блокування на рівні рядки.