Типи таблиць mysql в допомогу

таблиці MyISAM

Використовувалися за замовчуванням в MySQL аж до виходу в світ версії 5.5.

Кожна MyISAM таблиця зберігається на диску в трьох файлах (в піддиректорії каталогу mysql / data), імена цих файлів збігаються з назвою таблиці, а розширення може приймати одне з наступних значень:






.frm - структура таблиці, цей файл містить інформацію про імена і типах стовпців і індексів;
.MYD - в цьому файлі містяться дані таблиці;
.MYI - в цьому файлі містяться індекси таблиці.

Таблиці MyISAM мають ряд особливостей:

Максимальна кількість індексів - 64 (з версії 4.1.2). Кожен індекс може бути максимум з 16 стовпців.

З версії MySQL 4.1, для кожного текстового стовпчика може бути задана своя кодування.

Допускається індексування текстових стовпців, в тому числі і змінної довжини.

Підтримується повнотекстовий пошук.

Таблиці мають спеціальний прапор, який вказує на правильність закриття таблиці. Якщо сервер був зупинений аварійно, то при завантаженні незакриті прапори будуть сигналізувати про можливі пошкоджених таблицях і сервер спробує автоматично їх перевірити і відновити.

Таблиці MyISAM можна перевіряти / відновлювати за допомогою утиліти myisamchk.

Таблиці MyISAM можна стискати за допомогою команди myisampack.

У MyISAM підтримується три різних типи таблиць. Два з них вибираються автоматично, в залежності від типу використовуваних стовпців. Третій - стислі таблиці - може бути створений тільки за допомогою інструменту myisampack.

1.Cтатіческіе таблиці (з фіксованою довжиною)

Це формат, прийнятий за замовчуванням. Він використовується, коли таблиця не містить стовпців VARCHAR, BLOB або TEXT. Даний формат - найпростіший і безпечний, а також найбільш швидкий при роботі з дисками. Швидкість досягається за рахунок простоти пошуку інформації на диску: в таблицях статичного формату з індексом для цього достатньо всього лише помножити номер рядка на її довжину. Крім того, при скануванні таблиці дуже просто зчитувати постійне кількість записів при кожному читанні з диска. Якщо станеться збій під час запису в файл MyISAM фіксованого розміру, myisamchk в будь-якому випадку зможе легко визначити, де починається і закінчується будь-який рядок. Тому зазвичай вдається відновити всі записи, крім тих, які були частково перезаписані.

2.Дінаміческіе таблиці

Формат використовується для таблиць, які містять стовпці VARCHAR, BLOB або TEXT, а також якщо таблиця була створена з параметром ROW_FORMAT = dynamic. Це дещо складніший формат, так як у кожного рядка є заголовок, в якому вказана її довжина. Одна запис може закінчуватися більш ніж в одному місці, якщо вона була збільшена під час оновлення. Щоб зробити дефрагментацію таблиці, можна скористатися командами OPTIMIZE table або myisamchk. Якщо у вас є статичні дані, які часто зчитуються / змінюються в деяких шпальтах VARCHAR або BLOB однієї і тієї ж таблиці, щоб уникнути фрагментації ці динамічні стовпці краще перемістити в інші таблиці.

3.Сжатие таблиці

Таблиці цього тип призначені тільки для читання. Вони генеруються за допомогою додаткового інструменту myisampack. Незважаючи на те, що формат таблиць MyISAM дуже надійний (всі зміни в таблиці записуються до повернення значення оператора SQL), таблиця, тим не менш, може бути пошкоджена. Таке відбувається в наступних випадках:







Процес mysqld знищений під час здійснення запису;

Несподіване відключення комп'ютера (наприклад, якщо вимкнулося електроживлення);

Помилка апаратного забезпечення;

Використання зовнішньої програми (наприклад myisamchk) на відкритій таблиці.

Помилка програмного забезпечення в коді MySQL або MyISAM.

таблиці InnoDB

З MySQL 5.5 є типом по-замовчуванню. Тип таблиць InnoDB розроблений компанією Innobase. Таблиці такого типу надають високу продуктивність і стійке зберігання даних в таблицях об'ємом до 1 Тбайт і навантаженням на сервер до 800 вставок / оновлень в секунду. Особливості типу InnoDB:

Всі таблиці зберігаються в єдиному табличному просторі, тому імена таблиць повинні бути унікальні.

Зберігання даних в єдиному табличному просторі дозволяє зняти обмеження на обсяг таблиць. Файл з таблицями може бути розбитий на кілька частин і розподілений по декількох дисках або навіть хостів.

Таблиці підтримують автоматичне відновлення після збою.

Цей тип таблиць в MySQL єдиний, який підтримує каскадне видалення і зовнішні ключі.

Виконується блокування на рівні окремих записів.

Є розширена підтримка кодувань.

таблиці MERGE

В MySQL існує тип таблиць MERGE (або таблиця MRG_MyISAM), який являє собою сукупність ідентичних таблиць MyISAM, які можуть використовуватися як одна таблиця. До сукупності таблиць можна застосовувати толькокоманди SELECT, DELETE і UPDATE. Якщо ж спробувати застосувати до таблиці MERGE команду DROP, вона подіє тільки на визначення MERGE.

таблиці MEMORY

Наступний тип таблиць MEMORY (HEAP) зберігається в оперативній пам'яті. через що всі запити до таких таблиць виконуються дуже швидко. Недолік у таких таблиць один - повна втрата даних у разі збою роботи сервера. У зв'язку з цим в таких таблицях зберігають в основному тимчасові дані, які можна легко відновити заново. При створенні таблиці типу MEMORY, створюється один файл з розширенням frm. в якому визначається структура таблиці. При зупинці або перезавантаження сервера, дані про структуру таблиці залишаються, але вся інформація міститься в цій таблиці втрачається, оскільки зберігається тільки в оперативній пам'яті. При кожному перезавантаженні сервера, пересоздавать таблицю не потрібно, її структура залишається. Таблиці типу MEMORY мають ряд обмежень:

Індекси використовуються тільки в операціях порівняння з операторами «=» і «⇔», з іншими операторами, такими як «>» або «<», индексирование столбцов не имеет смысла.

Як і з MERGE таблицями можливе використання тільки неунікальний індексів.

Не допустимі стовпці типів TEXT і BLOB.

До версії MySQL 4.1 в таблицях даного типу не поддержіваляс AUTO_INCREMENT.

таблиці EXAMPLE

Тип EXAMPLE є заглушкою. створити таблицю такого типу можна а ось отримати або передати дані не можна. При створенні таблиць такого типу, як і з таблицями MEMORY створюється тільки один файл frm, в ньому визначається структура таблиці.

Таблиці BDB (BerkeleyDB)

Таблиці BDB обслуговуються транзакційних оброблювачем BerkeleyDB, який розроблений компанією Sleepycat. При створенні таблиць цього типу формуються два файли: .frm - зберігається структура таблиці. .db - зберігаються дані і індекси.

Особливості таблиць BDB:

Для таблиць ведеться журнал. що дозволяє підвищити стійкість бази і збільшити ймовірність успішного відновлення в разі збою.

Таблиці типу BDB зберігаються у вигляді бінарних дерев. Цей метод зберігання уповільнює сканування таблиці (припустимо для вибірки всіх рядків таблиці) і збільшує займане таблицею місце на диску. Однак пошук окремих значень в таблиці стає швидше. Всі інші таблиці зберігають у вигляді бінарних дерев свої індекси.

Всі таблиці BDB повинні мати первинний ключ, при відсутності створюється прихований первинний ключ з атрибутом AUTO_INCREMENT.

Для даного типу таблиць підтримуються транзакції на рівні сторінок.

Підрахунок кількості рядків в таблиці за допомогою функції COUNT () відбувається повільніше, через те що підрахунок рядків для таблиць BDB (на відміну від MyISAM) на стороні серверу не підтримується і повний перерахунок відбувається при кожному зверненні.

Ключі не є упакованими, як в таблицях MyISAM і займають більше місця.

У разі, коли таблиця BDB займає весь вільний місце на диску, відбувається відкат транзакції і виведення повідомлення про помилку. На відміну від BDB, таблиці MyISAM просто чекатимуть появи вільного місця, що призведе до зависання сервера.







Схожі статті