【转】分析SQL Server计划缓存

摘要:
它将提供SQL Server计划缓存的内容和使用频率。图1.对于SQLServer2005及其更新版本,引入了DMV来获取此信息。SQL Server 7.0的整个内存的单独可配置缓存区域。因此,它被称为程序缓存。在SQL Server 7.0及更高版本中,计划缓存不是SQL Server内存的独立部分。现在,SQL Server使用非常动态的集成内存管理和缓存管理机制。面孔是SQL Server 2005脚本#2的结果集的一部分。请记住,对于SQLServer2000,您需要使用syscacheobjects,而对于SQLServer2005和更高版本,您主要使用DMVsys。dm_exec_cached_测试或解决问题时,可能需要清除计划缓存。
http://www.cio360.net/Page/1808/InfoID/291578/SourceId/11281/PubDate/2009-02-03/Default.aspx#pager

SQL Server 7.0发布的版本之前,计划缓存是用于SQL Server的整个内存的单独可配置缓存区域。只有存储过程缓存在缓存的那个部分。由于这个原因,它被叫做程序缓存,在SQL Server 7.0和后面的版本中,计划缓存不是SQL Server内存单独的一个部分。现在SQL Server 是用一个非常动态的集成内存管理和缓存管理机制。

下面的脚本用于SQL Server 2000和前面的版本。它将提供SQL Server 计划缓存的内容和使用频率。


下面是SQL Server 2000脚本#1的部分结果集。

分析SQL Server计划缓存

图一

对于SQL Server 2005和它更新的版本,DMV已经被引进来获得这一信息。因此要得到缓存计划的内容和使用统计数据,你可能要使用下面的DMV脚本。

分析SQL Server计划缓存

下面是SQL Server 2005脚本#2的部分结果集。SQL Server 7.0的整个内存的单独可配置缓存区域。只有存储过程缓存在缓存的那个部分。由于这个原因,它被叫做程序缓存,在SQL Server 7.0和后面的版本中,计划缓存不是SQL Server内存单独的一个部分。现在SQL Server 是用一个非常动态的集成内存管理和缓存管理机制。

和前面的版本。它将提供SQL Server 计划缓存的内容和使用频率。

脚本#1的部分结果集。

和它更新的版本,DMV已经被引进来获得这一信息。因此要得到缓存计划的内容和使用统计数据,你可能要使用下面的DMV脚本。

分析SQL Server计划缓存

图二

上述脚本以及它们的描述所使用的整个领域如下:

分析SQL Server计划缓存

下面是SQL Server 2005脚本#2的部分结果集。

面是SQL Server 2005脚本#2的部分结果集。

分析SQL Server计划缓存

利 用上述脚本你可以看到SQL Server中的对象和它们的使用频率。记住对于SQL Server 2000,你需要使用系统表syscacheobjects而对于SQL Server 2005和更新的版本,主要使用DMV sys.dm_exec_cached_plans

当测试或者解决问题时,你可能需要清除计划缓存。你可以使用下面两种命令来达到目的。

     Script # 3: 清除整个SQL Server计划缓存 DBCC FREEPROCCACHE

GO

Script #4: 清除某个特定数据库的SQL Server 计划缓存

DBCC FLUSHPROCINDB ()

GO

/*

You can get DBID through following command

Select dbid from sysdatabases where name = <'DBName'>

*/

  除了上面的命令,下面的操作也将刷新整个计划缓存而新批需要新的计划。

分离任何数据库

SQL Server 2005或更高版本中升级任何数据库到兼容性级别90或者更高

针对任何数据库运行 ALTER DATABASE ... MODIFY FILEGROUP 命令

运行 ALTER DATABASE ... COLLATE来修改任何数据库的校对

用下面任何一个命令来更改一个数据库将会把缓存在具体数据库中的所有计划都删除掉。

ALTER DATABASE ..... MODIFY NAME

ALTER DATABASE ..... SET ONLINE

ALTER DATABASE ..... SET OFFLINE

ALTER DATABASE ..... SET EMERGENCY

下面的操作也会删除一个具体数据库的缓存计划。

删除一个数据库

数据库自动关掉

这是与在这里提及没有一种方法可以把一个单独的查询计划从SQL 2005和更低版本的缓存中删除有关,但是在SQL 2008中现在是可能的。

 

免责声明:文章转载自《【转】分析SQL Server计划缓存》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MIL/SIL/PIL/HIL/VIL简单粗暴方式解决H5移动端页面滚动的时候触发touchend事件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML5离线缓存问题

HTML5离线缓存问题 1.应用程序缓存 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。应用程序缓存为应用带来三个优势: 离线浏览 - 用户可在应用离线时使用它们 速度 - 已缓存资源加载得更快 减少服务器负载 - 浏览器将只从服务器下载更新过...

golang sql连接池的实现解析

golang的”database/sql”是操作数据库时常用的包,这个包定义了一些sql操作的接口,具体的实现还需要不同数据库的实现,mysql比较优秀的一个驱动是:github.com/go-sql-driver/mysql,在接口、驱动的设计上”database/sql”的实现非常优秀,对于类似设计有很多值得我们借鉴的地方,比如beego框架cache...

java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法

数据库查询时间没有了时分秒的解决办法问题出处,公司一个项目中使用动态sql方式查询Oracle数据库,在展示时Date类型字段只展示日期,无时分秒。分析:1、众所周知Oralce的日期类型有很多种,Date ,Timestamp等。其中Date类型对用的是java.sql.Date类型,Timestamp对用的是java.sql.Timestamp类型。这...

性能测试指标

1. 测试环境指标折算: 测试环境平均并发数=(最大在线人数*10%)/n n是生产环境和测试环境服务器配置折算比,例如n=公倍数((生产web服务器数/测试web服务器数),(生产app服务器数/测试app服务器数))*(生产服务器内存/测试服务器内存),一般算下来n=4。 2. B/S架构。一般关注的web服务器性能指标 Avg Rps:平均每秒钟的响...

redis 参数配置总结

redis.conf 配置项说明如下 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程   daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入 /var/run/redis.pid 文件,可以通过pidfile指定pidfile /var/run/redis.pi...

在Navicat中如何新建数据库和表并做查询

上一篇文章,小编给大家分享了在Navicat中如何远程连接数据库,没有来得及上车的小伙伴可以戳这篇文章:在Ubuntu14.04中配置mysql远程连接教程。今天小编给大家分享一下如何在Navicat中新建数据库和表。 用过远程连接数据库工具的小伙伴都知道,在Navicat中新建数据库和表并不太难,具体的教程如下所示。在这里依然以IP地址为192.168....