MySQL Керівництво адміністратора
Можна використовувати старий тип таблиць ISAM. Він зникне досить скоро тому, що MyISAM найкраща реалізація тієї ж речі. ISAM використовує індекс B-tree. Індекс збережено у файлі з розширенням .ISM, а дані збережені у файлі з розширенням .ISD. Ви можете перевіряти/ремонтувати ISAM-таблиці за допомогою команди isamchk. Подробиці у розділі 4.4.6.7 Використання myisamchk для ремонту.
ISAM має такі особливості та властивості:
- Ключі фіксованої довжини та стислі.
- Записи фіксованої та змінної довжини (динамічні).
- 16 ключів із 16 частинами ключа
- Максимальна довжина ключа 256 (за замовчуванням)
- Дані зберігаються у машинному форматі. Це швидко, але залежить від OS та використовуваного процесора.
Більшість з того, що сказано про таблиці MyISAM, вірно і для таблиць ISAM. Подробиці у розділі "7.1 Таблиці MyISAM". Основні відмінності від таблиць типу MyISAM:
- ISAM-таблиці не переносяться між різними OS та платформами.
- Не можна обробляти таблиці > 4G.
- Підтримується лише префіксне стиснення рядків.
- Найменші обмеження ключа.
- Динамічні таблиці стають фрагментованішими.
- Таблиці стискаються pack_isam замість myisampack.
Якщо Ви хочете перетворювати ISAM-таблицю в MyISAM-таблицю так, щоб Ви могли використовувати утиліти, типу mysqlcheck, використовуйте команду ALTER TABLE:
Таблиці HEAP використовують хешований індекс та зберігаються в пам'яті. Це робить їх дуже швидкими, але якщо MySQL впаде, Ви втратите всі дані, збережені в них. HEAP дуже корисні для створення тимчасових таблиць у пам'яті!
Внутрішні таблиці MySQL HEAP використовують 100% динамічне хешування без областей переповнення. Не потрібно ніякогододаткового простору, який буде необхідний для вільних списків. Таблиці HEAP також не мають проблем із видаленням+вставкою:
Є деякі речі, які слід враховувати, коли Ви використовуєте таблиці HEAP :
- Ви повинні завжди використовувати визначення MAX_ROWS в інструкції CREATE, щоб гарантувати, що Ви випадково не використовуєте всю пам'ять.
- Індекси будуть використовуватися тільки з = і (але ДУЖЕ швидко!).
- Таблиці HEAP можуть використовувати лише цілі ключі, щоб шукати рядок. Порівняйте це з таблицями MyISAM , де будь-який префікс ключа можна використовувати, щоб знайти рядки.
- Таблиці HEAP використовують фіксований формат запису.
- Таблиці HEAP не підтримують стовпці BLOB та TEXT.
- Таблиці HEAP не підтримують AUTO_INCREMENT.
- Таблиці HEAP не підтримують індекс на стовпці NULL.
- Ви можете мати унікальні ключі в таблиці HEAP.
- Таблиці HEAP розділені між усією клієнтурою (так само, як і будь-яка інша таблиця).
- Ви не можете шукати наступний запис (тобто використовувати індекс для здійснення виклику ORDER BY ).
- Дані для таблиць HEAP розподілені у невеликих блоках. Таблиці на 100% динамічні (при вставці). Жодних областей переповнення та жодного додаткового місця ключа не треба. Видалені рядки розміщуються у зв'язаному списку та використовуються, коли Ви вставляєте нові дані до таблиці.
- Вам потрібно мати достатньо пам'яті для всіх таблиць HEAP, які Ви хочете використовувати в той же час.
- Щоб звільнити пам'ять, Ви повинні виконати DELETE FROM heap_table, TRUNCATE heap_table або DROP TABLE heap_table.
- MySQL не може з'ясовувати приблизно скільки рядків є між двома значеннями (це використовується оптимізатором)діапазону, щоб вирішити, як краще індексувати). Це може впливати на деякі запити, якщо ви змінюєте таблицю MyISAM на таблицю HEAP .
- Щоб гарантувати, що Ви випадково не робите що-небудь помилково, Ви не можете створювати таблиці типу HEAP більше, ніж max_heap_table_size .
Пам'ять, необхідна для одного рядка в таблиці HEAP:
sizeof(char*) є 4 на 32-розрядних машинах та 8 на 64-розрядних системах.