#mysql #partitioning
#mysql #разделение
Вопрос:
Поскольку раздел также разбивает таблицу на подтаблицы, я хотел знать, есть ли какой-либо способ индексировать разделенную таблицу одну за другой на основе имени или идентификатора раздела. Я спрашиваю об этом, потому что в моей таблице может быть более 1 миллиарда строк, а запрос на добавление индекса занимает много часов в день, поэтому хотел проверить, могу ли я начать добавлять индекс на основе раздела, который я считаю более важным в первую очередь, или наоборот.
Комментарии:
1. Индекс является подразделом таблицы. Когда вы индексируете разделенную таблицу, индексируется вся таблица, но каждый раздел индексируется независимо (некоторые подробности и последствия см. В разделе Ключи разделения, первичные ключи и уникальные ключи ).
Ответ №1:
Нет, MySQL не имеет синтаксиса для поддержки создания индексов в секционированной таблице по одному разделу за раз. Индекс будет добавлен ко всем разделам в одном ALTER TABLE
CREATE INDEX
операторе or.
В моей компании мы выполняем изменения схемы, используя pt-online-schema-change, скрипт, который позволяет клиентам продолжать чтение и запись таблицы во время выполнения изменения. Может потребоваться даже больше времени для запуска изменения схемы, но поскольку это не блокирует клиентов, это не вызывает проблем.
Скрипт является частью инструментария Percona, который представляет собой бесплатный набор инструментов с открытым исходным кодом, написанный на Perl и Bash.