2.4. Анализ и очистка
Базы данных Shardman требуют периодического обслуживания, такого как очистка. Для многих инсталляций достаточно, чтобы очистка выполнялась демоном автоочистки. Как и при установке PostgreSQL, демон автоочистки автоматически запускает команды ANALYZE
всякий раз, когда содержимое таблицы существенно изменяется. Когда ANALYZE
запускается демоном автоочистки или вручную для всей базы данных, статистика из сторонних секций передаётся с удалённых узлов.
В процессе перебалансировки данные могут перемещаться или копироваться между узлами кластера. После этой операции все перемещённые объекты автоматически анализируются. Как обычно, собирается локальная статистика и статистика со сторонних серверов.
Примечание
Команда ANALYZE
на уровне базы данных использует статистику, доступную на удалённых сегментах. Но такая статистика может отсутствовать, и недостаточно просто транслировать команду ANALYZE
для обновления статистики на уровне кластера. Вместо этого можно использовать функцию shardman.global_analyze(). Она собирает статистику для сегментированных и глобальных таблиц.
Команду VACUUM
для очистки всей базы данных можно транслировать, чтобы выполнить очистку всего кластера. Это можно сделать, если включён параметр конфигурации shardman.broadcast_ddl
.
Примечание
Когда команда ANALYZE
выполняется для глобальной таблицы, обновляется только статистика соответствующей локальной таблицы. При запуске ANALYZE
для сегментированной таблицы обновляется статистика по локальным секциям, статистика по сторонним секциям передаётся с удалённых узлов, если она есть. Когда ANALYZE
выполняется непосредственно для сторонней таблицы, а на удалённом узле нет статистики для соответствующей локальной таблицы, эта таблица анализируется удалённо. Затем статистика передаётся с удалённого узла.
Когда VACUUM
запускается для сегментированной или глобальной таблицы, оператор транслируется. Для сегментированной таблицы очистка выполняется для всех секций.