3 .6 .5 优化Ad-Hoc工作负载

执行计划生成后会存储在plan cache中,以便重用,如果计划缓存从来都没有被重用 过,将会造成内存资源的浪费,这有可能是由于非参数化的Ad-hoc (即席查询)引起的。 当执行代码时,会产生一个hash值,用于匹配计划缓存中的hash值,相同的hash值代表 语句是相同的。如果执行一个存储过程,会按照存储过程名来创建hash值,如果在存储过 程之外执行代码(Ad-hoc T-SQL),那么hash值会根据整个语句产生。你的代码有一点点字 面上的改变,都会产生不同的hash值,导致计划无法重用。当有大量Ad-hoc执行时,会 导致计划缓存的膨胀。

针对这类问题,可以考虑使用存储过程、函数或者参数化Ad-hoc,但是有时候的确没 有办法,必须使用非参数化的Ad-hoc。从 SQL Server 2008开始,引人了一个“针对即席 工作负荷进行优化”的选项,如图3-9所示。

找到该选项的具体步骤是:右键实例,然后选择“属性",再选择“高级",之后把图3-9

箭头处的False改成True。下面是针对该选项的官方解释:

 

“针对即席工作负荷进行优化”选项用于提高包含许多一次性临时批处理的工作负荷计

划缓存的效率。如果该选项设置为True,则数据库引擎将在首次编译批处理时在计划缓存 中存储一个编译的小计划存根,而不是存储完全编译的计划。在这种情况下,不会让未重

复使用的编译计划填充计划缓存,从而有助于缓解内存压力。

编译的计划存根使数据库引擎能够识别此临时批处理以前已经编译过,但只存储了编

译计划存根,因此当再次调用(编译或执行)此批处理时,数据库引擎会对此批处理进行编

译,从计划缓存中删除编译计划存根并将完全编译的计划添加到计划缓存中。

“针对即席工作负荷进行优化”设置为1 只会影响新计划,而已在计划缓存中的计

划不受影响。

编译计划存根是sys.dm_exec_cached_plans目录视图显示的cacheobjtype之一它具有

唯一的SQL句柄和计划句柄。编译计划存根没有与其关联的执行计划,并且查询计划句柄

不会返回XML显示计划。

可以用下面的脚本来查看缓存对象的对应内存数。

SELECT objtype AS 'Cached Object Type * , COUNT(*) AS 'Number of Plans', SUM(CAST{size_in_bytes AS BIGINT)) / 1024 / 1024 AS 'Plan Cache Size (MB)', AVG(usecounts) AS 'Avg Use Count * FROM sys.dm_exec_cached_plans GROUP BY objtype

在笔者计算机上的结果如图3-10所示。

 

 在 没 有 开 启 上 面 选 项 的 系 统 中 ,Ad-hoc通 常 是 内 存 占 用 最 多 的 部 分 。所 以 从 SQL Server 2008开 始 ,建议开启这个选项。

转载于:https://www.cnblogs.com/zhouwansheng/p/9243933.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LightOJ - 1422 (区间DP)

题意:有t组数据,对于每组,有n个聚会需要参加,下面依次是参加各个聚会需要的衣服编号,要求所需要的衣服一定穿在外面,在操作的时候,可以选择穿上一件衣服或脱下一件衣服,脱下的衣服不…

python判断字典,列表,元组为空的方法。

m1 []m2 ()m3 {}判断他们为空的方法是什么? if m1:非空else:空if not m2: 空 else:非空False,0,,[],{},()都可以视为假

解决 JSP 页面报错 equal symbol expected

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.报错:org.apache.jasper.JasperException: /WEB-INF/jsp/op/settlement/spRateModify.jsp(368,110) equal symbol expecte…

表单隐藏域与display:none

有时候前端进行表单填写是分步骤的,每一步的时候其他步骤相关的表单视图不可见; 针对"不可见",以下有两种处理方式: ①display:none 这种方式呢,比较简单,就是将三个步骤分3个div&…

视频领域的Instagram:Viddy用户突破2600万

北京时间5月9日消息,据TheNextWeb报道,视频分享应用Viddy的注册用户数量已经达到2600万,而上个月的用户数量还是650万。日均增长用户超过50万,成绩斐然,投资者对Viddy目前的增长表示很满意。 Viddy是如何达到这样的成…

log 的 debug()、 error()、 info()方法的区别

软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志,不管用什么,这些东东大多是大同小异的,一般都提供了这样5个日志级别: Debug Info Warn Error Fatal 一个等级比一个高,但…

存储容量(空间)换算公式(B、KB、MB、GB、TB、PB、EB)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 <strong>存储容量&#xff1a;是该存储设备上可以存储数据的最大数量&#xff0c;通常使用千字节&#xff08;kb kilobyte&#x…

如何防止表单的重复提交

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题&#xff0c;比如&#xff1a; (1)点击提交按钮两次。 (2)点击刷新按钮。 (3)使用浏览器后退按钮重复之前的操作&#xff0c;导致重复提交表单。 (4)使用浏览器历史记录重…

GDB调试精粹及使用实例

一&#xff1a;列文件清单 1&#xff0e; List (gdb) list line1,line2 二&#xff1a;执行程序 要想运行准备调试的程序&#xff0c;可使用run命令&#xff0c;在它后面可以跟随发给该程序的任何参数&#xff0c;包括标准输入和标准输出说明符(<和>)和外壳通配符&a…

如何使用log.debug()

log4j是一个开源的日志&#xff0c;共分为六个等级&#xff1a;LOG、DEBUG、INFO、WARN、ERROR、和FATAL。 DEBUG是其中的一种日志级别。一般我们用这个方法的时候都是这样的&#xff1a; if(log.isDebugEnabled()){log.debug("debug&#xff01;"); } 意思是&am…

写给大数据开发初学者的话

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 导读&#xff1a; 第一章&#xff1a;初识Hadoop 第二章&#xff1a;更高效的WordCount第三章&#xff1a;把别处的数据搞到Hadoop上第…

2018年7月份,python上传自己的包库到pypi官网的方法

最近pypi官网进行了更新&#xff0c;老的上传网址作废了。记录下上传到pypi的方法 0、去pypi官网注册账号&#xff0c;没账号是不可能上传的&#xff0c;想想也是那不乱套了吗&#xff0c;注册后会收到一个邮件需要点击然后重新登录 1、目录就是这样 &#xff0c;我要上传muli…

linux系统C语言学习总结

引言   尽管 C 语言问世已近 30 年&#xff0c;但它的魅力仍未减退。C 语言继续吸引着众多的开发者&#xff0c;他们为了编写、移植或维护应用程序而必须学习新技能。   本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的。希望对您的学习和工作有…

redis 删除操作

Redis 键(key) Redis 键命令用于管理 redis 的键。 语法 Redis 键命令的基本语法如下&#xff1a; redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上实例中 DEL 是…

写给大数据开发初学者的话2

见 : http://lxw1234.com/archives/2016/11/782.htm 如果你已经按照《写给大数据开发初学者的话》中第一章和第二章的流程认真完整的走了一遍&#xff0c;那么你应该已经具备以下技能和知识点&#xff1a; 0和Hadoop2.0的区别&#xff1b;MapReduce的原理&#xff08;还是那个…

Pandas的结构和应用

Pandas处理以下三个数据结构 - 系列(Series)----一维ndarray   特点&#xff1a;带有标签&#xff0c;可以使用标签作为索引&#xff0c;大小不能改变&#xff0c;内部数据可以改变。 属性&#xff1a;与NumPy类似&#xff0c;多了一个轴标签axis lables 数据…

JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

题目 Description “那么真的有果尔德施坦因这样一个人?”他问道。 “是啊&#xff0c;有这样一个人&#xff0c;他还活着。至于在哪里&#xff0c;我就不知道了。” “那么那个密谋——那个组织?这是真的吗?不是秘密警察的捏造吧?” “不是&#xff0c;这是真的。我们管…

python 中如何判断list中是否包含某个元素

在python中可以通过in和not in关键字来判读一个list中是否包含一个元素 theList [‘a’,’b’,’c’] if ‘a’ in theList: print ‘a in the list’ if ‘d’ not in theList: print ‘d is not in the list’

时间即财富:创业者浪费精力的八个错误

导读&#xff1a;本文作者Jeff Miller是美食网页应用Punchfork的创始人&#xff0c;同时也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投资人。作者通过对自己创业初期一些错误选择进行盘点&#xff0c;告诉读者在创业初期应该学会选择&#xff0c;因为在创业初…

写给大数据开发初学者的话3

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 如果你已经按照《写给大数据开发初学者的话2》中第三章和第四章的流程认真完整的走了一遍&#xff0c;那么你应该已经具备以下技能和知识…