--临时工作负载优化

 

即席查询:也就是查询完没放到Cache当中,每次查询都要重新经过编译,并发高的时候很耗性能;

参数化查询: 一方面解决了重编译问题,但随着数据库数据数据的变更,统计信息的更新,可能缓存里的缓存计划已经不是查询优化器想要的结果;

Above  SQL server 2008:

Optimize For Ad Hoc Workloads

第一次adhoc查询时候,cache会缓存一个存根的执行计划,本质上是一个300字节的标记,告诉SQLserver这个查询已经跑过了一次;如果使用默认值全部缓存计划最小大小为16KB;

那么问题来了,为什么微软工程师们不把默认值设为开启呢,微软的答复:当两个很复杂的编译的时候执行编译2次,这将是一件可怕的事情;

It Was a very edge case!

 

参数设置配置:

EXEC sp_configure 'show advanced options',1
RECONFIGURE
EXEC sp_configure 'optimize for ad hoc workloads',1
RECONFIGURE

界面:

 

查询执行一次AdHoc查询的大小及数量:

SELECT COUNT(1) AS COUNTS,
SUM(cast(size_in_bytes AS BIGINT)/1024/1024) AS CACHED_MB
FROM SYS.dm_exec_cached_plans
WHERE OBJTYPE='ADHOC'  AND USECOUNTS=1

如果这个结果很大话,可以通过游标来批量执行:

----AUTHOR: KiNG
----DATE: 2016-08-18
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @PKID VARBINARY(64) 
DECLARE CURSOR_FREE CURSOR FOR

SELECT PLAN_HANDLE
--,CP.usecountS ,
--ST.TEXT
FROM
SYS.dm_exec_cached_plans CP
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(CP.plan_handle) ST
WHERE ST.TEXT LIKE 'SELECT%'
AND CP.objtype IN  ('Prepared','Adhoc')
AND CP.cacheobjtype=N'Compiled Plan'
AND CP.usecounts=1
OPEN CURSOR_FREE
FETCH NEXT FROM CURSOR_FREE INTO @PKID
WHILE @@fetch_status=0
BEGIN
DBCC FREEPROCCACHE(@PKID)
FETCH NEXT FROM CURSOR_FREE INTO @PKID
END

CLOSE CURSOR_FREE;
DEALLOCATE CURSOR_FREE;

Optimize For Ad Hoc Workloads的更多相关文章

  1. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问

    delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...

  2. Ad hoc sql

    SQL Server如何启用Ad Hoc Distributed Queries? 2011-08-11 14:53 wangdingbang CSDN博客 字号:T | T   本文主要介绍了SQL ...

  3. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问

    消息 15281,级别 16,状态 1,第 2 行SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/Open ...

  4. XE7 & IOS开发之开发账号(3):证书、AppID、设备、授权profile的申请使用,附Debug真机调试、Ad hoc下iPA文件生成演示(XCode5或以上版本推荐,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  5. XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  6. 启用与关闭 Ad Hoc Distributed Queries

    在数据库里执行以下脚本: 启用: exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Dis ...

  7. Sql导出数据报错-->SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问

    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服 ...

  8. 解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问

      SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为 ...

  9. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。

    今天单位一ASP.NET网站,里面有个功能是导出数据,发现一导出就报错,报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT ...

随机推荐

  1. 继webpack后又一打包神器Parcel

    前言: 在继grunt.gulp实现自动化构建之后,webpack又引领前端打包潮流,众所周知的是,vue-cli的脚手架就是基于webpack进行项目打包的.而webpack还在上升的势头的时候,又 ...

  2. centos7 忘记mysql root密码办法

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和 ...

  3. 《图解Spark:核心技术与案例实战》作者经验谈

    1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...

  4. Hibernate框架进阶(上篇)

    导读 前面一片文章介绍了Hibernate框架的入门,主要是讲解Hibernate的环境搭建和简单测试,有兴趣的童鞋出门左转.本文在入门的基础上进行Hibernate的进阶讲解,分为上中下三篇,本篇为 ...

  5. day5、文件乱码怎么解决

    1.1 Linux下,如何将一个乱码的文件进行重命名 方法一: 命令格式:mv $(ls   |egrep "[^a-zA-Z0-9.-]") tandao.tx [root@nb ...

  6. Java开发小技巧(二):自定义Maven依赖

    前言 我们在项目开发中经常会将一些通用的类.方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用. 一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存 ...

  7. 网络基础之 OSI七层模型

    OSI七层模型模型图如下: 前三层(应用层,表示层,会话层)=>给用户提供服务. 后四层(传输层,网络层,数据链路层,物理层)=>数据传递提供服务. 其中 数据链路层中MAC地址负责局域网 ...

  8. SQL-PL/SQL基础

    SQL的4GL,对流程控制的支持不够,Oracle的PL/SQL是3GL.加入了流程控制.变量等支持能够在数据库层面上进行程序的设计. PL/SQL的特点 1.支持事务控制和SQL. 2.数据类型在S ...

  9. 十条很实用的jQuery代码片段

    本文转自:http://developer.51cto.com/art/201604/509093.htm 作者:核子可乐译来源:51CTO 原文标题:10 jQuery Snippets for E ...

  10. 25个增强iOS应用程序性能的提示和技巧(0基础篇)

    在开发iOS应用程序时,让程序具有良好的性能是非常关键的. 这也是用户所期望的,假设你的程序执行迟钝或缓慢,会招致用户的差评.然而因为iOS设备的局限性,有时候要想获得良好的性能,是非常困难的. 在开 ...