Короткий довідник по типам таблиць в 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