2) 如上所述,看起来 AUTO CLOSE 已打开。您需要将其关闭,因为这是另一个不利于良好性能的选项。为什么?每次关闭最后一个连接时,SQL Server 都会尝试自行关闭,这会导致清除过程和数据缓存。这两个是通过减少从磁盘获取数据的需要来支持良好性能的,这与从内存读取相比非常昂贵。生成执行计划是一个 CPU 密集型过程,您的 sql 服务器必须在从自动关闭返回后生成计划。现在你知道它在做什么,继续关闭自动关闭。
And possible errors caused by them
27/08/2010 10:09:01 SQL Server has encountered 3 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
27/08/2010 10:09:01 SQL Server has encountered 3 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
27/08/2010 10:09:00 SQL Server has encountered 3 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
一些事情。
1) 关闭自动收缩。它是邪恶的,并且可能是长期性能问题的根源,因为它可能导致文件级碎片。
2) 如上所述,看起来 AUTO CLOSE 已打开。您需要将其关闭,因为这是另一个不利于良好性能的选项。为什么?每次关闭最后一个连接时,SQL Server 都会尝试自行关闭,这会导致清除过程和数据缓存。这两个是通过减少从磁盘获取数据的需要来支持良好性能的,这与从内存读取相比非常昂贵。生成执行计划是一个 CPU 密集型过程,您的 sql 服务器必须在从自动关闭返回后生成计划。现在你知道它在做什么,继续关闭自动关闭。
3) SQL Server 并没有真正执行 DBCC CHECKDB,而是在读取存储最后一次干净运行 DBCC CHECKDB 日期的引导文件后显示一条消息。它只是写入日志文件,并没有真正在此处运行 CHECKDB。看起来您运行 CHECKDB 已经超过 2 个月了,尽可能定期运行 CHECKDB 是一个很好的做法。
http://technet.microsoft.com/en-us/magazinebeta/2009.10.sqlqa.aspx
我会检查是否在您的数据库上启用了 Auto_Close。启用后,一旦最后一个用户退出连接,您的数据库将关闭并释放其资源。当新用户开始使用数据库时,它会重新打开。如果您的数据库在每次打开数据库时都在运行 checkdb,那么这可能是您的问题。
以下查询将检查所有数据库上的 Auto_Close:
SELECT * FROM sys.databases
WHERE is_auto_close_on = 1
当我没有任何计划时,我遇到了类似的奇怪 DBCC CHECKDB 运行的情况。一些小的挖掘让我找到了我们的一位服务器工程师,他被指示使用赛门铁克备份数据库(这些是 Sharepoint dbs)。就在他的备份之前,赛门铁克工具被配置为运行 DBCC CHECKDB。在这种情况下,赛门铁克保持连接,因此活动监视器帮助我解决了这个问题。
感谢这篇文章,我刚刚通过禁用自动关闭和自动收缩来修复 3 个数据库,以消除每 5 分钟一次的“正在启动数据库......”和“CHECKDB”消息