26.3.4 Поддержка таблиц с разбиением
Для таблиц с разбиением можно выполнить ряд задач по обслуживанию таблиц и разбиений с помощью SQL-выражений, предназначенных для таких целей.
Обслуживание таблиц с разбиением можно выполнить с помощью инструкций CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE и REPAIR TABLE, которые поддерживаются для таблиц с разбиением.
Вы можете использовать ряд расширений к ALTER
TABLE для выполнения операций такого типа на одной или нескольких разбиениях напрямую, как описано в следующем списке:
-
Перестроение разбиений. Перестраивает разбиение; это имеет тот же эффект, что и удаление всех записей, хранящихся в разбиении, а затем повторное их вставление. Это может быть полезно для дефрагментации.
Пример:
ALTER TABLE t1 REBUILD PARTITION p0, p1;
-
Оптимизация разбиений. Если вы удалили большое количество строк из разбиения или внесли много изменений в таблицу с разбиением, содержащую строки переменной длины (то есть имеющие столбцы
VARCHAR,BLOBилиTEXT), вы можете использоватьALTER TABLE ... OPTIMIZE PARTITIONдля освобождения неиспользуемого пространства и дефрагментации файла данных разбиения.Пример:
ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;
Использование
OPTIMIZE PARTITIONдля данного разбиения эквивалентно выполнениюCHECK PARTITION,ANALYZE PARTITIONиREPAIR PARTITIONдля этого разбиения.Некоторые СУБД MySQL, включая
InnoDB, не поддерживают оптимизацию по разбиениям; в этих случаяхALTER TABLE ... OPTIMIZE PARTITIONанализирует и перестраивает всю таблицу, а также выводит соответствующее предупреждение. (Ошибка #11751825, Ошибка #42822) ИспользуйтеALTER TABLE ... REBUILD PARTITIONиALTER TABLE ... ANALYZE PARTITIONвместо этого, чтобы избежать этой проблемы. -
Анализ разбиений. Это считывает и хранит распределения ключей для разбиений.
Пример:
ALTER TABLE t1 ANALYZE PARTITION p3;
-
Ремонт разбиений. Это исправление поврежденных разбиений.
Пример:
ALTER TABLE t1 REPAIR PARTITION p0,p1;
Как правило,
REPAIR PARTITIONтерпит неудачу, когда разбиение содержит ошибки дублирования ключей. Вы можете использоватьALTER IGNORE TABLEс этим параметром, в этом случае все строки, которые нельзя переместить из-за наличия дублирующихся ключей, удаляются из разбиения (Ошибка #16900947). -
Проверка разбиений. Вы можете проверить разбиения на ошибки, аналогично тому, как можно использовать
CHECK TABLEс неразбитыми таблицами.Пример:
ALTER TABLE trb3 CHECK PARTITION p1;
Эта команда сообщает вам, повреждены ли данные или индексы в разбиении
p1таблицыt1. Если это так, используйтеALTER TABLE ... REPAIR PARTITIONдля исправления разбиения.Как правило,
CHECK PARTITIONтерпит неудачу, когда разбиение содержит ошибки дублирования ключей. Вы можете использоватьALTER IGNORE TABLEс этим параметром, в этом случае команда возвращает содержимое каждой строки в разбиении, где обнаружена ошибка нарушения дублирования ключей. Сообщаются только значения столбцов в выражении разбиения для таблицы. (Ошибка #16900947)
Каждая из перечисленных команд также поддерживает ключевое слово ALL вместо списка имен разбиений. Использование ALL заставляет команду действовать на всех разбиениях в таблице.
Вы также можете обнулить разбиения, используя ALTER TABLE ...
TRUNCATE PARTITION. Эта команда может использоваться для удаления всех строк из одного или нескольких разбиений аналогично тому, как TRUNCATE TABLE удаляет все строки из таблицы.
ALTER TABLE ...
TRUNCATE PARTITION ALL обнуляет все разбиения в таблице.
© 2025 Oracle
Licensed under the GPLv2 License.