WEB开发网
开发学院数据库MSSQL Server 优化SQL Server的内存占用之执行缓存 阅读

优化SQL Server的内存占用之执行缓存

 2007-08-06 09:48:26 来源:WEB开发网   
核心提示: DBCC 执行完毕,如果 DBCC 输出了错误信息,优化SQL Server的内存占用之执行缓存(3),请与系统管理员联系,1即这次只用1秒钟即完成了10000次查询,这样,不同的SQL语句执行方式,我们再看一下sys.dm_exec_cached_plans中的查询计划:Select C

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

1

即这次只用1秒钟即完成了10000次查询。

我们再看一下sys.dm_exec_cached_plans中的查询计划:

  Select Count(*) CNT,sum(size_in_bytes) TotalSize From sys.dm_exec_cached_plans

查询结果:共有4条执行计划被缓存。它们共占用内存: 172032字节 = 168KB。

如果执行dbcc memorystatus,则得到结果:

优化SQL Server的内存占用之执行缓存

优化SQL Server的内存占用之执行缓存

优化SQL Server的内存占用之执行缓存

有12875页空闲内存(每页8KB)可以被数据缓存所使用。

到这里,我们已经看到了一个反差相当明显的结果。在现实中,这个例子中的前者,正是经常被使用的一种执行SQL脚本的方式(例如:在程序中通过合并字符串方式拼成一条SQL语句,然后通过ADO.NET或者ADO方式传入SQL Server执行)。

解释一下原因:

我们知道,SQL语句在执行前首先将被编译并通过查询优化引擎进行优化,从而得到优化后的执行计划,然后按照执行计划被执行。对于整体相似、仅仅是参数不同的SQL语句,SQL Server可以重用执行计划。但对于不同的SQL语句,SQL Server并不能重复使用以前的执行计划,而是需要重新编译出一个新的执行计划。同时,SQL Server在内存足够使用的情况下,此时并不主动清除以前保存的查询计划(注:对于长时间不再使用的查询计划,SQL Server也会定期清理)。这样,不同的SQL语句执行方式,就将会大大影响SQL Server中存储的查询计划数目。

上一页  1 2 3 4  下一页

Tags:优化 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接