2.4. Анализ и очистка

Базы данных Shardman требуют периодического обслуживания, такого как очистка. Для многих инсталляций достаточно, чтобы очистка выполнялась демоном автоочистки. Как и при установке PostgreSQL, демон автоочистки автоматически запускает команды ANALYZE всякий раз, когда содержимое таблицы существенно изменяется. Когда ANALYZE запускается демоном автоочистки или вручную для всей базы данных, статистика из сторонних секций передаётся с удалённых узлов.

В процессе перебалансировки данные могут перемещаться или копироваться между узлами кластера. После этой операции все перемещённые объекты автоматически анализируются. Как обычно, собирается локальная статистика и статистика со сторонних серверов.

Примечание

Команда ANALYZE на уровне базы данных использует статистику, доступную на удалённых сегментах. Но такая статистика может отсутствовать, и недостаточно просто транслировать команду ANALYZE для обновления статистики на уровне кластера. Вместо этого можно использовать функцию shardman.global_analyze(). Она собирает статистику для сегментированных и глобальных таблиц.

Команду VACUUM для очистки всей базы данных можно транслировать, чтобы выполнить очистку всего кластера. Это можно сделать, если включён параметр конфигурации shardman.broadcast_ddl.

Примечание

Когда команда ANALYZE выполняется для глобальной таблицы, обновляется только статистика соответствующей локальной таблицы. При запуске ANALYZE для сегментированной таблицы обновляется статистика по локальным секциям, статистика по сторонним секциям передаётся с удалённых узлов, если она есть. Когда ANALYZE выполняется непосредственно для сторонней таблицы, а на удалённом узле нет статистики для соответствующей локальной таблицы, эта таблица анализируется удалённо. Затем статистика передаётся с удалённого узла.

Когда VACUUM запускается для сегментированной или глобальной таблицы, оператор транслируется. Для сегментированной таблицы очистка выполняется для всех секций.