SQL SERVER中的OLEDB等待事件
OLEDB等待事件介绍
OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一。它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Provider发生了调用请求并等待数据库返回所需的数据。它出现在远程系统(remote system )或网络连接速度不够快,因此调用服务器必须等待要返回结果的情况下。OLEDB等待事件一般是由那些活动造成呢?它一般由下面一些事件引起:
- 远程过程调用(Remote procedure calls)
- 链接服务器查询(Linked server queries)
- BULK INSERT commands
- Full-search queries 或外部数据源处理,例如Excel
- 客户端的Profiler跟踪(Client-side Profiler traces)
- DMV, log reader and DBCC CHECKDB
看到DBCC CHECKDB会引起OLEDB等待事件,你是否觉得很奇怪,其实刚开始的时候我也觉得很奇怪,我们的DPA(Database Performance Analyzer)监控工具发现SQL 2012、SQL 2014数据库的DBCC CHECKDB引起的OLEDB等待事件占据了等待类型柱状图很大的比例。这个引起了我的好奇心,后面查证后发现DBCC CHECKDB它使用 OLEDB 行集在查询处理器和存储引擎的子系统之间交换信息。
下面演示一下DBCC CHECKDB出现OLEDB等待事件的例子:
--SESSION 1
DBCC SQLPERF('sys.dm_os_wait_stats', CLEAR);
GO
DBCC CHECKDB('AdventureWorks2014');
--SESSION 2
SELECT * FROM
sys.dm_os_wait_stats
WHERE wait_type='OLEDB'
在DBCC CHECKDB还在执行时,你在会话2中,会看到OLEDB等待类型的waiting_tasks_count、wait_time_ms会一直增加。关于DBCC CHECKDB产生的OLEDB等待事件,我从DPA里面观察,发现SQL Server 2012、SQL Server 2014明显要比SQL Server 2005、 SQL Server 2008要多,暂时不清楚具体原因,在SQL SERVER 2012/2014中DBCC CHECKDB出现了几个Bug,具体可以参考官方文档SQL Server 2014 Service Pack 1 release information 。我们可以看到官方已经Fix掉了三个关于DBCC CHECKDB的Bug。但是我更新了这些补丁,依然发现DBCC CHECKDB引起的OLEDB等待事件较多。
另外关于DMV会引起OLEDB等待事件,是因为DMV内部使用了OLEDB,因此一些监测工具频繁调用DMV也会导致出现较多OLEDB等待事件。
OLEDB等待事件解决
1:从应用层面考虑,只返回必要的字段和数据。减少网络传输内容和时间。从而减少OLEDB等待事件。例如分页控件的按页获取数据。
2:如果使用Linked Server获取的数据是静态数据,可以考虑将这些静态数据复制到本地数据库,减少没有必要的链接服务器查询。如果数据是动态变化,也可以考虑使用使用复制(发布订阅)将数据同步到本地数据库。
3:从业务角度出发审查你的数据分布,链接服务器查询是否绝对有必要?那些是可以减少、那些不必要的?另外 ,可以从架构层面考虑解决,例如将那些数据集中起来。
4:如果有些数据源是Excel文件,可以先将其通过FTP或文件共享上传到本机,然后处理数据。
5: 优化链接服务器查询的SQL,检查其是否缺少索引、统计信息是否过时;是否可以将某些业务逻辑放置到远程服务器上去处理(存储过程),然后只返回需要的数据。例如下面这种需求。
SELECT * FROM
linked_server.dbo.table_a inner join ..
linked_server.dbo.table_b inner join ..
linked_server.dbo.table_c inner join ..
.......................
6:找系统管理员或网络管理员了解专线带宽等情况。有时候网络带宽资源不足时也是引起OLEDB等待事件增多的原因。
SQL SERVER中的OLEDB等待事件的更多相关文章
- 如何减少SQL Server中的PREEMPTIVE_OS_WRITEFILEGATHER等待类型
在数据库大小分配期间,我正在等待类型PREEMPTIVE_OS_WRITEFILEGATHER.昨天,我将数据库大小配置为供应商建议的值.我们需要将数据库大小设置为700GB,保留150 GB的日志文 ...
- 如果正确读取SQL Server中的扩展事件?
SQL Server中使用扩展事件捕捉所需的信息后,可以选择存放的位置.比如说内存或文件中,但无论存在哪里,其本质都是一个大XML.因此在SQL Server中读取该XML就是解析扩展事件结果 ...
- 浅析SQL Server 中的SOS_SCHEDULER_YIELD类型的等待
本文出处:http://www.cnblogs.com/wy123/p/6856802.html 进程的状态转换 在说明SOS_SCHEDULER_YIELD等待之前,先简要介绍一下进程的状态(迷迷糊 ...
- SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 【转】SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- SQL Server中关于跟踪(Trace)那点事(转载)
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 【转贴】SQL Server中关于跟踪(Trace)那点事
SQL Server中关于跟踪(Trace)那点事 https://www.cnblogs.com/zhijianliutang/p/4113911.html 作者很牛B.. 前言 一提到跟踪俩字,很 ...
- SQL Server中SELECT会真的阻塞SELECT吗?
在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...
- SQL Server中的“最大并行度”的配置建议
SQL Server中的最大并行度(max degree of parallelism)如何设置呢? 设置max degree of parallelism有什么好的建议和指导方针呢?在微软官方文档R ...
随机推荐
- ZOJ Problem Set - 1292 Integer Inquiry
题目本身属于简单题,但是注意在输出的时候,题目很变态的对格式做了很多要求: 1.输入的N与下面的block有一个空行 2.每次输出与下一个输入的block有一个空行 3.但是特别注意,当是最后一个输出 ...
- 数据库SQL Service 2014中文版的安装和配置教程
一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...
- jQuery打造智能提示插件二(可编辑下拉框)
在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// ...
- chrome浏览器的跨域设置——包括版本49前后两种设置
做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程.但是新版本的chrome浏览器提 ...
- iOS9的几个新关键字(nonnull、nullable、null_resettable、__null_unspecified)
1.nonnull:字面意思就能知道:不能为空(用来修饰属性,或者方法的参数,方法的返回值) 代码: //三种使用方式都可以 @property (nonatomic, copy, nonnull) ...
- jQuery获取Select选中的Text和Value
获取Select选中的Text和Value语法解释:$("#select_id").change(function(){//code...}); // 为Select添加事件, ...
- 【Win10开发】Toast通知——前台激活
上篇文章我们将了大体的Toast通知的模板及实例展示,那么,这篇文章就来讲讲Toast的前台激活. 首先是xaml界面,很简单,我们放一个Button和TextBlock,TextBlock用来显示T ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- 前端 angular 和 bootstrap 的安装步骤
1.安装bower模块: npm install -g bower --registry=http://registry.npm.taobao.org 2.创建.bowerrc 文件存放 前端相关的模 ...
- 【Java每日一题】20161222
package Dec2016; import java.util.Random; public class Ques1222 { public static void main(String[] a ...
