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-розрядних системах.