原文: SQL SERVER中的OLEDB等待事件

OLEDB等待事件介绍

OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一。它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Provider发生了调用请求并等待数据库返回所需的数据。它出现在远程系统(remote system )或网络连接速度不够快,因此调用服务器必须等待要返回结果的情况下。OLEDB等待事件一般是由那些活动造成呢?它一般由下面一些事件引起:

  1. 远程过程调用(Remote procedure calls)
  2. 链接服务器查询(Linked server queries)
  3. BULK INSERT commands
  4. Full-search queries 或外部数据源处理,例如Excel
  5. 客户端的Profiler跟踪(Client-side Profiler traces)
  6. 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等待事件相关推荐

  1. 如何在SQL Server中处理过多的SOS_SCHEDULER_YIELD等待类型值

    The SQL Server SOS_SCHEDULER_YIELD is a fairly common wait type and it could indicate one of two thi ...

  2. 如何将用户迁移到SQL Server中的部分包含的数据库

    介绍 (Introduction) Microsoft introduced the Contained Database feature in SQL Server 2012. In this ar ...

  3. SQL Server中关于跟踪(Trace)那点事(转载)

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中"跟踪"也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充 ...

  4. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  5. 十步优化SQL Server中的数据访问

    故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...

  6. pads中如何设置等长_如何在SQL Server中设置扩展,监控系统性能

    dbForge Studio for SQL Server为有效的探索.分析SQL Server数据库中的大型数据集提供全面的解决方案,并设计各种报表以帮助作出合理的决策. dbForge Studi ...

  7. SQL Server中的快照隔离

    介绍 (Introduction) In this article, I'll explore the use of snapshot isolation using row versioning a ...

  8. sql server死锁_如何解决SQL Server中的死锁

    sql server死锁 In this article, we will talk about the deadlocks in SQL Server, and then we will analy ...

  9. SQL Server中的数据库文件组和零碎还原

    So far, we discussed many de-facto details about SQL Server database backup and restore. In this 15t ...

最新文章

  1. Python程序员Debug利器,和Print说再见 | 技术头条
  2. leetcode 206 Reverse Linked List
  3. xenserver下的SR,VDI,VBD
  4. 第二个例子:单链表实现基排序(桶排序)
  5. 机器学习(一)线性回归
  6. linux分区工具fdisk的使用
  7. 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发
  8. mysql mariadb的VC客户端遇到的问题
  9. Java学习系列及数据结构博客全目录
  10. Google的Flutter工具允许开发者开发跨平台应用
  11. 项目10.2-企业级自动化运维工具---puppet详解
  12. python语言规范_python语言规范
  13. glibc静态链接 libc.a(nsswitch.o)(.data+0x64):undefined reference to `_nss_files_getaliasent_r' 错误解决方法
  14. 领导力有哪些方面?什么是领导力?
  15. 基础知识(三),OSI七层协议、数据传输过程、数据的封装与解封装、IP抓包分析、交换机、路由器、ARP协议、TRUNK中继、VLAN、DHCP中继、ICMP协议、三层交换机
  16. 科普|股东需要对企业债务承担连带责任
  17. 杠杆的倍数一般是多少?
  18. tomcat下载与安装win11
  19. python入门图谱_Python入门基础教程图
  20. flannel和calcio_Calcio是什么意思

热门文章

  1. android mux协议,是否支持GSM0710 MUX多路复用 协议? 如何使用?
  2. android ui界面
  3. 思杰虚拟服务器退出管理主机,思杰服务器虚拟化解决详尽方案介绍2012.ppt
  4. 修改adb devices列表中设备串号名称
  5. python枪战项目计划书_用python分析了20万场吃鸡数据
  6. 【渝粤题库】广东开放大学 管理学原理 形成性考核
  7. java数学题_小学数学练习题用Java实现
  8. linux定时运行命令
  9. 新版本 chrome 手机浏览器关闭为您推荐的文章方法
  10. AIGC火了,但它能替代红人们吗?