База данных для vCenter Server 5.5.0 на MS SQL Server 2016 выросла до размера более 200 GB. В ходе разбирательства оказалось, что в разделе SQL Server Agent \ Jobs отсутствуют задачи выполняющие регулярную очистку БД от старой статистики vCenter Server (содержимое множества таблиц VPX_HIST_STAT*).
Стандартный список задач показан на скриншоте.
Задачи были скопированы с другого сервера VMware vCenter Server (Script Job as CREATE To -> Файл ). Имя БД в скриптах на создание задач при необходимости нужно изменить. Затем задачи были последовательно запущены на выполнение в ручном режиме (Start Job at Step...).
Перед выполнением очистки рекомендуется сделать бекап БД и остановить службу сервера VMware vCenter Server.
На сайте VMWare есть скрипты для разных СУБД выполняющие очистку таблиц VPX_HIST_STAT*
2058670_MS_SQL_CLEANUP_STATS.zip - для СУБД MS SQL
Скрипт удаления может выполняться много часов. В моем случае скорость удаления составляла около 3 GB в час.
Оценить размеры таблиц VPX_HIST_STAT* можно используя следующий скрипт (исходный взят отсюда https://www.experts-exchange.com/questions/28659336/VPX-Events-Table-and-Database-Retention-Settings.html)
SELECT [Table Name],
(SELECT rows FROM sysindexes s WHERE s.indid < 2 AND s.id = OBJECT_ID(a.[Table Name])) AS [Row count], [Total space used (MB)] FROM
(
SELECT QUOTENAME(USER_NAME(o.uid)) + '.' + QUOTENAME(OBJECT_NAME(i.id)) AS [Table Name],
CONVERT(numeric(15,2),(((CONVERT(numeric(15,2),SUM(i.reserved)) * (SELECT low FROM master.dbo.spt_values (NOLOCK) WHERE number = 1 AND type = 'E')) / 1024.)/1024.)) AS [Total space used (MB)]
FROM sysindexes i (NOLOCK)
INNER JOIN
sysobjects o (NOLOCK)
ON
i.id = o.id AND
((o.type IN ('U', 'S')) OR o.type = 'U') AND o.name like 'VPX_HIST_%' AND
(OBJECTPROPERTY(i.id, 'IsMSShipped') = 0)
WHERE indid IN (0, 1, 255)
GROUP BY QUOTENAME(USER_NAME(o.uid)) + '.' + QUOTENAME(OBJECT_NAME(i.id))
) as a
ORDER BY [Total space used (MB)] DESC