17.6.2.2 Физическая структура индекса InnoDB
За исключением пространственных индексов, индексы являются структурами данных. Пространственные индексы используют, которые представляют собой специализированные структуры данных для индексирования многомерных данных. Записи индекса хранятся в листовых страницах их структуры данных B-дерева или R-дерева. По умолчанию размер страницы индекса составляет 16 КБ. Размер страницы определяется настройкой innodb_page_size при инициализации экземпляра MySQL. См. Раздел 17.8.1, «Настройка запуска InnoDB».
При вставке новых записей в InnoDB, InnoDB пытается оставить 1/16 страницы свободной для будущих вставок и обновлений записей индекса. Если записи индекса вставляются в последовательном порядке (возрастающем или убывающем), результирующие страницы индекса заполнены примерно на 15/16. Если записи вставляются в случайном порядке, страницы заполнены от 1/2 до 15/16.
InnoDB выполняет массовую загрузку при создании или перестроении индексов B-дерева. Этот метод создания индексов известен как построение отсортированного индекса. Переменная innodb_fill_factor определяет процент пространства на каждой странице B-дерева, заполняемого во время построения отсортированного индекса, при этом оставшееся пространство резервируется для будущего роста индекса. Построение отсортированных индексов не поддерживается для пространственных индексов. Для получения дополнительной информации см. Раздел 17.6.2.3, «Построение отсортированных индексов». Настройка innodb_fill_factor со значением 100 оставляет 1/16 пространства в страницах кластеризованного индекса свободным для будущего роста индекса.
Если коэффициент заполнения страницы индекса InnoDB опускается ниже MERGE_THRESHOLD, который по умолчанию составляет 50%, если не указано иное, InnoDB пытается сжать дерево индекса, чтобы освободить страницу. Настройка MERGE_THRESHOLD применяется как к индексам B-дерева, так и к индексам R-дерева. Для получения дополнительной информации см. Раздел 17.8.11, «Настройка порога слияния для страниц индекса».
© 2025 Oracle
Licensed under the GPLv2 License.