Содержание
- 7.1. Таблицы
MyISAM
- 7.2. Таблицы
MERGE
- 7.3. Таблицы
ISAM
- 7.4. Таблицы
HEAP
- 7.5. Таблицы
InnoDB
- 7.5.1. Обзор таблиц InnoDB
- 7.5.2. Параметры запуска InnoDB
- 7.5.3. Создание табличной области InnoDB
- 7.5.4. Создание таблиц InnoDB
- 7.5.5. Добавление и удаление файлов данных и журналов InnoDB
- 7.5.6. Создание резервных копий и восстановление баз данных InnoDB
- 7.5.7. Перенесение базы данных InnoDB на другой компьютер
- 7.5.8. Транзакционная модель InnoDB
- 7.5.9. Реализация многовариантности
- 7.5.10. Структуры таблиц и индексов
- 7.5.11. Управление файловым пространством и дисковый ввод/вывод
- 7.5.12. Обработка ошибок
- 7.5.13. Ограничения для таблиц InnoDB
- 7.5.14. История изменений InnoDB
- 7.5.15. Контактная информация для получения данных по InnoDB
- 7.6. Таблицы
BDB
или BerkeleyDB - 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
- 7.6.1. Обзор таблиц
В MySQL версии 3.23.6 можно было выбирать из трех основных форматов таблиц
(ISAM
, HEAP
и MyISAM
). Более новые версии MySQL могут поддерживать
дополнительные типы таблиц (InnoDB
или BDB
) - в зависимости от варианта
установки.
При создании новой таблицы можно указать MySQL, какой тип таблицы для нее использовать.
Для таблицы и определений столбцов MySQL всегда создает файл
.frm
. Индекс и данные хранятся в других файлах, в зависимости от типа
таблиц.
Обратите внимание: если необходимо использовать таблицы InnoDB
, при
запуске следует указать параметр innodb_data_file_path
. See Раздел 7.5.2, «Параметры запуска InnoDB».
Если попытаться воспользоваться таблицей, которая не была активизирована или
добавлена при компиляции, MySQL вместо нее создаст таблицу типа MyISAM
.
Это очень полезная функция, когда необходимо произвести копирование таблиц с
одного SQL-сервера на другой, а серверы поддерживают различные типы таблиц
(например, при копировании таблиц на подчиненный компьютер, который
оптимизирован для быстрой работы без использования транзакционных таблиц).
Тем не менее, такое автоматическое изменение таблиц может сбить с толку новых пользователей MySQL. Мы планируем устранить эту проблему путем введения предупреждений в новом клиент-серверном протоколе в MySQL 4.1, которые будут выводиться при автоматическом изменении типов таблиц.
Преобразовывать таблицы из одного типа в другой можно при помощи оператора
ALTER TABLE
. See Раздел 6.5.4, «Синтаксис оператора ALTER TABLE
».
Обратите внимание на то, что MySQL поддерживает два различных типа таблиц:
транзакционные (InnoDB
и BDB
) и без поддержки транзакций (HEAP
, ISAM
,
MERGE
и MyISAM
).
Преимущества транзакционных таблиц (Transaction-safe tables, TST):
Надежность. Даже если произойдет сбой в работе MySQL или возникнут проблемы с оборудованием, свои данные вы сможете восстановить - либо методом автоматического восстановления, либо при помощи резервной копии и журнала транзакций.
Можно сочетать несколько операторов и принимать все эти операторы одной командой
COMMIT
.Можно запустить команду
ROLLBACK
, чтобы отменить внесенные изменения (если работа не производится в режиме автоматической фиксации).Если произойдет сбой во время обновления, все изменения будут восстановлены (в нетранзакционных таблицах все внесенные изменения не могут быть отменены).
Лучше обеспечивает параллелизм при одновременных обновлениях таблицы и чтении.
Обратите внимание, что для использования таблиц InnoDB вам как минимум
следует указать опцию innodb_data_file_path
. See Раздел 7.5.2, «Параметры запуска InnoDB».
Преимущества нетранзакционных таблиц (non-transaction-safe tables, NTST):
Работать с ними намного быстрее, так как не выполняются дополнительные транзакции.
Для них требуется меньше дискового пространства, так как не применяются дополнительные транзакции.
Для обновлений используется меньше памяти.
В операторах можно сочетать таблицы TST и NTST, чтобы взять лучшее от каждого типа.