Короткий довідник по типам таблиць в MySQL

Розглянемо основні типи таблиць в MySQL (MariaDB)

MyISAM

  • не має транзакцій
  • максимальний диск 256 Гб
  • блокування таблиць
  • повнотекстовий пошук
  • робота в кластері: ні
  • підтримка цілісності: ні
  • зовнішні ключі: ні
  • реплікація: так
  • макс. індексів: 64
  • макс. записів: 2^32
  • макс. довжина ключа: 1000 байт
  • чутлива до падіння серверу, важко відновити
  • моливість зберігати файли індексів і данних на різних дисках

InnoDB

Був спеціально розроблений для великих таблиць

  • Максимальний диск: 64Гб
  • повна підтримка транзакцій (4 рівня ізоляції)
  • блокування запису (не таблиці), два види блокування SHARED and EXCLUSIVE
  • повнотекстовий пошук з 5.6 версії
  • безпечна для транзакцій
  • індекси кластерезуються для типових запитів
  • підтримка цілісності бази (зовнішні ключі)
  • дозволяє використовувати Raw Disk для таблиць для обходу роботи з файловою системою
  • по замовчуванню ввімкнений AUTOCOMMIT
  • автоматичний детект deadlock

MERGE

  • використовується для об'єднання однакових таблиць в одну
  • таблиці повинні мати однакову структуру
  • порядок стовбців повинен співпадати
  • DROP не видаляє дані в оригінальних таблицях
  • таблиці можуть бути в іншій базі данних
  • можна використовувати для аліасів (для одної таблиці)
  • не можливо використати FULLTEXT search
  • не можна змішувати тимчасові і не тимчасові таблиці
  • повільна при читанні по ключу
  • REPLACE не працює
  • не відслідковуються зміни в структурі оригінальних таблиць (таблиця буде поломана)

HEAP (MEMORY)

  • транзакцій не має
  • блокуавння таблиць
  • реплікація: так
  • максимальна довжина ключа: 500байт
  • усі дані втрачаються при зупинці сервера (сама таблиця залишається)
  • формат збереження даних: завжди fixed-length row
  • пам'ять не звільняється при видаленні записів (використовується для вставки нових)

ARCHIVE

  • максимальна розмір необмежений
  • блокування записів а не таблиці
  • не працює DELETE, REPLACE, UPDATE, ORDER BY тип BLOB
  • INSERT буферізується і спрацьовує з великою затримкою, дані заливаються батчами
  • дуже повільний SELECT

CSV

  • збергігає таблиці в csv форматі
  • дозволяє редагувати таблиці зовнішніми додатками
  • погано документований, є відкриті баги

BLACKHOLE

  • дані пишуть в нікуда
  • двійкові логи пишуться (бін-логи)
2019-03-30 16:58:05