分离数据库后导致CPU使用率增加
在多数据库服务器中迁移某个数据库时,为了省时间,我们可能会直接把某个数据库分离,然后直接使用mdf文件在另一台机上再附加此数据库。这么样做的结果会把所有缓存计划清除出缓冲区。导致CPU的使用率会在一段时间内一直剧高不下。
除了分离会导致清除过程缓存,其它的操作像:把数据库设置为在线或离线后、对数据库进行重命名时、试图修改数据库的排序规则时(不管成功与否)、直接删除某个数据库时。其它的没有具体测试,可能还不只这些操作会引起此问题。
为了能观察试验结果,在自己机器上可以对AdventureWorks运行下面的语句(测试环境SQLSERVER2005SP2):
Code
接着可以对其它的任一数据库如Northwind执行上述的分离等任一操作,再查看sys.dm_exec_cached_plans发现刚才的缓存计划已经没有了。为什么SQLSERVER会选择这么做,我现在也没有搞清楚。
不过,通过上面的结果我们在高峰时段应该避免对数据库执行上述操作。