7.5. Таблицы InnoDB
7.5.10. Структуры таблиц и индексов
- 7.5.10.1. Физическая структура индекса
- 7.5.10.2. Буферизация вставок
- 7.5.10.3. Адаптивный хешированный индекс
- 7.5.10.4. Физическая структура записи
- 7.5.10.5. Как работают автоинкрементные столбцы в InnoDB
В MySQL информация словаря данных таблиц хранится в файлах .frm , расположенных в каталогах баз данных. Но для каждой таблицы InnoDB имеются также свои записи во внутренних словарях данных InnoDB в табличной области. Когда MySQL удаляет таблицу или базу данных, необходимо удалить как файлы .frm , так и соответствующие записи в словаре данных InnoDB. Именно поэтому нельзя перемещать таблицы InnoDB между базами данных путем простого перемещения файлов .frm . По этой же причине DROP DATABASE не работал для таблиц InnoDB в MySQL версий <= 3.23.43.
Для всех таблиц InnoDB есть специальный индекс, в котором хранятся данные строк - он называется кластеризованным индексом. Если в таблице определить PRIMARY KEY , то индекс первичного ключа будет кластеризированным индексом.
Если первичный ключ для таблицы не определен, то InnoDB самостоятельно создаст кластеризированный индекс; строки в этом индексе будут упорядочены по идентификатору строки, который InnoDB назначил строкам этой таблицы. Идентификатор строки представляет собой 6-байтовое поле, значение которого постоянно увеличивается при вставке новых строк. Таким образом, сортировка по идентификатору строки фактически представляет собой сортировку по последовательности вставки.
Доступ к строке через кластеризированный индекс осуществляется достаточно быстро, поскольку данные строки находятся на той же странице, к которой приводит поиск по индексу. Во многих базах данных информация и индексная запись традиционно хранятся на разных страницах. При больших размерах таблицы архитектура кластеризированных индексов часто позволяет сократить количество дисковых операций ввода/вывода по сравнению с традиционными решениями.
Записи в некластеризированных индексах (мы называем их также вторичными индексами), в InnoDB содержат значение первичного ключа для строки. InnoDB использует этот значение первичного ключа для поиска строки в кластеризированном индексе. Следует учитывать, что если первичный ключ достаточно велик, вторичные индексы будут занимать больше места.
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|