优化SQL Server的内存占用之执行缓存
来源:互联网 发布:最靠谱的租房软件 编辑:程序博客网 时间:2024/05/17 10:24
Select Count(*) CNT,sum(size_in_bytes) TotalSize From sys.dm_exec_cached_plans
sql server(WINDOWS平台上强大的数据库平台)内存占用由哪几部分组成。sql server(WINDOWS平台上强大的数据库平台)占用的内存主要由三部分组成:数据缓存(Data Buffer)、执行缓存(Procedure Cache)、以及sql server(WINDOWS平台上强大的数据库平台)引擎程序。
sql server(WINDOWS平台上强大的数据库平台)引擎程序所占用缓存一般相对变化不大,则我们进行内存调优的主要着眼点在数据缓存和执行缓存的控制上。
SQL语句在执行前首先将被编译并通过查询优化引擎进行优化,从而得到优化后的执行计划,然后按照执行计划被执行。对于整体相似、仅仅是参数不同的SQL语句,sql server(WINDOWS平台上强大的数据库平台)可以重用执行计划。但对于不同的SQL语句,sql server(WINDOWS平台上强大的数据库平台)并不能重复使用以前的执行计划,而是需要重新编译出一个新的执行计划。同时,sql server(WINDOWS平台上强大的数据库平台)在内存足够使用的情况下,此时并不主动清除以前保存的查询计划(注:对于长时间不再使用的查询计划,sql server(WINDOWS平台上强大的数据库平台)也会定期清理)。这样,不同的SQL语句执行方式,就将会大大影响sql server(WINDOWS平台上强大的数据库平台)中存储的查询计划数目。
对于减少执行缓存的占用,主要可以通过使用参数化查询减少执行缓存占用。
1、使用参数化查询减少执行缓存占用
对此,我们一般可以通过两种方式实现参数化查询:一是尽可能使用存储过程执行SQL语句(这在现实中已经成为sql server(WINDOWS平台上强大的数据库平台) DBA的一条原则),二是使用sp_executesql 方式执行单个SQL语句
在现实的同一个软件系统中,大量的负载类型往往是类似的,所区别的也只是每次传入的具体参数值的不同。所以使用参数化查询是必要和可能的。
2、检查并分析sql server(WINDOWS平台上强大的数据库平台)执行缓存中的执行计划
通过上面的介绍,我们可以看到SQL缓存所占用的内存大小。也知道了sql server(WINDOWS平台上强大的数据库平台)执行缓存中的内容主要是各种SQL语句的执行计划。则要对缓存进行优化,就可以通过具体分析缓存中的执行计划,看看哪些是有用的、哪些是无用的执行计划来分析和定位问题。
通过查询DMV: sys.dm_exec_cached_plans,可以了解数据库中的缓存情况,包括被使用的次数、缓存类型、占用的内存大小等。
SELECT usecounts, cacheobjtype, objtype,size_in_bytes, plan_handle
FROM sys.dm_exec_cached_plans
通过缓存计划的plan_handle可以查询到该执行计划详细信息,包括所对应的SQL语句: SELECT TOP 100 usecounts,
objtype,
p.size_in_bytes,
[sql].[text]
FROM sys.dm_exec_cached_plans p
OUTER APPLY sys.dm_exec_sql_text (p.plan_handle) sql
ORDER BY usecounts
我们可以选择针对那些执行计划占用较大内存、而被重用次数较少的SQL语句进行重点分析。看其调用方式是否合理。另外,也可以对执行计划被重复使用次数较多的SQL语句进行分析,看其执行计划是否已经经过优化。进一步,通过对查询计划的分析,还可以根据需要找到系统中最占用IO、CPU时间、执行次数最多的一些SQL语句,然后进行相应的调优分析。
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存篇
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 优化SQL Server的内存占用之执行缓存
- 执行缓存以优化SQL Server的内存占用
- 执行缓存以优化SQL Server的内存占用
- SQL Server执行SQL语句时内存占用特点(2)
- SQL Server执行SQL语句时内存占用特点(1)
- ROC曲线相关
- SH7218T拆解手记(13)修改开机外屏上的“中国电信”字样
- 年轻IT人的选择
- effective c++ 2012-10-12 11:28
- Unity3D Animation动画视图_脚本控制(2)
- 优化SQL Server的内存占用之执行缓存
- 认识VFS
- Apache配置详解(最好的APACHE配置教程)
- android 项目编码修改, GBK 变UTF-8
- 赫夫曼编码!
- ssl_Client
- ftrace 简介
- 什么是UPnP?
- 图解:win7+vs2010+opencv2.3.1配置方法