7 Типы таблиц MySQL
В MySQL версии 3.23.6 можно было выбирать из трех основных форматов таблиц (ISAM
, HEAP
и MyISAM
). Более новые версии MySQL могут поддерживать дополнительные типы таблиц (InnoDB
или BDB
) - в зависимости от варианта установки.
При создании новой таблицы можно указать MySQL, какой тип таблицы для нее использовать. Для таблицы и определений столбцов MySQL всегда создает файл `.frm'. Индекс и данные хранятся в других файлах (их расширения зависят от типа таблицы).
Обратите внимание: если необходимо использовать таблицы InnoDB
, при запуске следует указать параметр innodb_data_file_path
. See section 7.5.2 Параметры запуска InnoDB.
Принятым по умолчанию типом таблиц в MySQL является MyISAM
. Если попытаться воспользоваться таблицей, которая не была активизирована или добавлена при компиляции, MySQL вместо нее создаст таблицу типа MyISAM
. Это очень полезная функция, когда необходимо произвести копирование таблиц с одного SQL-сервера на другой, а серверы поддерживают различные типы таблиц (например, при копировании таблиц на подчиненный компьютер, который оптимизирован для быстрой работы без использования транзакционных таблиц). Тем не менее, такое автоматическое изменение таблиц может сбить с толку новых пользователей MySQL. Мы планируем устранить эту проблему путем введения в MySQL 4.0 предупреждений, которые будут выводиться при автоматическом изменении типов таблиц.
Преобразовывать таблицы из одного типа в другой можно при помощи оператора ALTER TABLE
. See section 6.5.4 Синтаксис оператора ALTER TABLE
.
Обратите внимание на то, что MySQL поддерживает два различных типа таблиц: транзакционные (InnoDB
и BDB
) и без поддержки транзакций (HEAP
, ISAM
, MERGE
и MyISAM
).
Преимущества транзакционных таблиц (Transaction-safe tables, TST):
- Надежность. Даже если произойдет сбой в работе MySQL или возникнут проблемы с оборудованием, свои данные вы сможете восстановить - либо методом автоматического восстановления, либо при помощи резервной копии и журнала транзакций.
- Можно сочетать несколько операторов и принимать все эти операторы одной командой
COMMIT
.
- Можно запустить команду
ROLLBACK
, чтобы отменить внесенные изменения (если работа не производится в режиме автоматической фиксации).
- Если произойдет сбой во время обновления, все изменения будут восстановлены (в нетранзакционных таблицах все внесенные изменения не могут быть отменены).
Преимущества таблиц без безопасных транзакций (non-transaction-safe tables, NTST):
- Работать с ними намного быстрее, так как не выполняются дополнительные транзакции.
- Для них требуется меньше дискового пространства, так как не применяются дополнительные транзакции.
- Для обновлений используется меньше памяти.
В операторах можно сочетать таблицы TST и NTST, чтобы взять лучшее от каждого типа.
Главы
- 7.1 Таблицы MyISAM
-
- 7.1.1 Пространство, необходимое для ключей
- 7.1.2 Форматы таблиц MyISAM
-
- 7.1.2.1 Характеристики статической таблицы (с фиксированной длиной)
- 7.1.2.2 Характеристики динамических таблиц
- 7.1.2.3 Характеристики сжатых таблиц
- 7.1.3 Проблемы с таблицами MyISAM.
-
- 7.1.3.1 Повреждения таблиц MyISAM
- 7.1.3.2 Clients is using or hasn't closed the table properly
- 7.2 Таблицы MERGE
-
- 7.2.1 Проблемы при работе с таблицами MERGE
- 7.3 Таблицы ISAM
- 7.4 Таблицы HEAP
- 7.5 Таблицы InnoDB
-
- 7.5.1 Обзор таблиц InnoDB
- 7.5.2 Параметры запуска InnoDB
- 7.5.3 Создание табличной области InnoDB
-
- 7.5.3.1 Если во время создания базы данных что-то происходит не так
- 7.5.4 Создание таблиц InnoDB
-
- 7.5.4.1 Преобразование таблиц MyISAM в формат InnoDB
- 7.5.4.2 Ограничения внешнего ключа
- 7.5.5 Добавление и удаление файлов данных и журналов InnoDB
- 7.5.6 Создание резервных копий и восстановление баз данных InnoDB
-
- 7.5.6.1 Контрольные точки
- 7.5.7 Перенесение базы данных InnoDB на другой компьютер
- 7.5.8 Транзакционная модель InnoDB
-
- 7.5.8.1 Согласованное чтение
- 7.5.8.2 Чтение с блокировкой
- 7.5.8.3 Блокировка следующего ключа: устранение проблемы с фантомом
- 7.5.8.4 Блокировка, осуществляемая различными операторами SQL в InnoDB
- 7.5.8.5 Обнаружение и откат взаимоблокировки (deadlock)
- 7.5.8.6 Пример работы согласованного чтения в InnoDB
- 7.5.9 Рекомендации по увеличению производительности
-
- 7.5.10 Реализация многовариантности
- 7.5.11 Структуры таблиц и индексов
-
- 7.5.11.1 Физическая структура индекса
- 7.5.11.2 Буферизация вставок
- 7.5.11.3 Адаптивный хешированный индекс
- 7.5.11.4 Физическая структура записи
- 7.5.11.5 Как работают автоинкрементные столбцы в InnoDB
- 7.5.12 Управление файловым пространством и дисковый ввод/вывод
-
- 7.5.12.1 Дисковый ввод/вывод
- 7.5.12.2 Управление файловым пространством
- 7.5.12.3 Дефрагментация таблицы
- 7.5.13 Обработка ошибок
- 7.5.14 Ограничения для таблиц InnoDB
- 7.5.15 Контактная информация для получения данных по InnoDB
- 7.6 Таблицы BDB или Berkeley_DB
-
- 7.6.1 Обзор таблиц BDB
- 7.6.2 Установка BDB
- 7.6.3 Параметры запуска BDB
- 7.6.4 Характеристики таблиц
BDB
- 7.6.5 Что нам нужно исправить в BDB в ближайшем будущем:
- 7.6.6 Операционные системы, поддерживаемые
BDB
- 7.6.7 Ограничения таблиц BDB
- 7.6.8 Ошибки, которые могут возникнуть при использовании таблиц BDB
Add your own comment.