5 index sql-server maintenance statistics dbcc-checkdb
我正在尝试编写 T-SQL 脚本,它将:
A) 将数据库大小缩小到可能的最小大小;B) 进行完整性检查,彻底“重组”和优化数据库,使其处于“新鲜”状态。
这是我目前拥有的:
-- Check database integrity:
DBCC CHECKDB WITH NO_INFOMSGS;
GO
-- Get space usage information:
EXEC sp_spaceused @updateusage = N'TRUE';
GO
-- Shrink database:
DBCC SHRINKDATABASE (0, 0);
GO
-- Reindex all tables:
EXEC sp_msforeachtable N'PRINT ''Indexing table: ?''; DBCC DBREINDEX (''?'');'
GO
-- Update statistics for all tables:
EXEC sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
GO
-- Clear procedure cache:
DBCC FREEPROCCACHE;
GO
-- Update all usage info in the database:
DBCC UPDATEUSAGE (0);
GO
Run Code Online (Sandbox Code Playgroud)
您能否验证所有这些是否正确?命令的优先级(例如在索引重建后更新统计信息,反之亦然)、语法、参数等都是最优的吗?你能建议任何其他命令吗?性能不是问题,我可能每个月都会执行一次这个脚本,晚上的时间,所以即使需要几个小时也没关系。我只需要对数据库进行最大程度的优化。任何投入将不胜感激。
谢谢!
Aar*_*and 22
恐怕您的脚本对数据库的工作方式充满了误解,至少在 SQL Server 中是这样。
我不得不说,到目前为止,您所获得的远非最佳,并且有更好的解决方案可以帮助您以更有效和更少浪费的方式优化数据库。查看Ola 的解决方案、SQLFool 的解决方案和SQL Sentry。这些不会缩小您的数据库,但它们会以一种智能的方式优化您的索引,无论如何您都不应该缩小您的数据库。
小智 7
就个人而言,我不会缩小数据库。当它需要再次生长时,它需要更多的时间。它还可能使文件系统碎片变得更糟。