Spec-Zone.ru › MySQL 5.7

22.3.4 Техническое обслуживание разделов

Несколько задач по обслуживанию таблиц и разделов можно выполнить с помощью SQL-запросов, предназначенных для таких целей, по разделяемым таблицам в MySQL 5.7.

Обслуживание таблиц разделяемых таблиц можно выполнить с помощью операторов 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 терпит неудачу, когда раздел содержит ошибки дублирования ключей. В MySQL 5.7.2 и более поздних версиях вы можете использовать ALTER IGNORE TABLE с этим параметром, в этом случае все строки, которые не могут быть перемещены из-за наличия дублирующих ключей, удаляются из раздела (Ошибка #16900947).

  • Проверка разделов. Вы можете проверить разделы на наличие ошибок аналогично тому, как вы можете использовать CHECK TABLE с неразделяемыми таблицами.

    Пример:

    ALTER TABLE trb3 CHECK PARTITION p1;
    

    Эта команда указывает, повреждены ли данные или индексы в разделе p1 таблицы t1. В этом случае используйте ALTER TABLE ... REPAIR PARTITION для восстановления раздела.

    Обычно CHECK PARTITION терпит неудачу, когда раздел содержит ошибки дублирования ключей. В MySQL 5.7.2 и более поздних версиях вы можете использовать ALTER IGNORE TABLE с этим параметром, в этом случае оператор возвращает содержимое каждой строки в разделе, где обнаружено нарушение дублирования ключей. Сообщаются только значения столбцов в выражении разбиения для таблицы. (Ошибка #16900947)

Каждый из операторов в только что показанном списке также поддерживает ключевое слово ALL вместо списка имен разделов. Использование ALL заставляет оператор действовать на все разделы в таблице.

Использование mysqlcheck и myisamchk не поддерживается с разделяемыми таблицами.

В MySQL 5.7 вы также можете обнулить разделы с помощью ALTER TABLE ... TRUNCATE PARTITION. Этот оператор можно использовать для удаления всех строк из одного или нескольких разделов аналогичным образом, как TRUNCATE TABLE удаляет все строки из таблицы.

ALTER TABLE ... TRUNCATE PARTITION ALL обнуляет все разделы в таблице.

До MySQL 5.7.2 ANALYZE, CHECK, OPTIMIZE, REBUILD, REPAIR и TRUNCATE операции не были разрешены для подразделов (Ошибка #14028340, Ошибка #65184).

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/partitioning-maintenance.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API