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.