SQL SERVER中的OLEDB等待事件

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文:SQL SERVER中的OLEDB等待事件OLEDB等待事件介绍 OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一。它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Provider发生了调用请求并等待数据库返回所需的数据。
原文: 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语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6天前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
22 1
|
1天前
|
SQL 关系型数据库 数据库
阿里云数据库 RDS SQL Server版实战【性能优化实践、优点探析】
本文探讨了Amazon RDS SQL Server版在云数据库中的优势,包括高可用性、可扩展性、管理便捷、安全性和成本效益。通过多可用区部署和自动备份,RDS确保数据安全和持久性,并支持自动扩展以适应流量波动。可视化管理界面简化了监控和操作,而数据加密和访问控制等功能保障了安全性。此外,弹性计费模式降低了运维成本。实战应用显示,RDS SQL Server版能有效助力企业在促销高峰期稳定系统并保障数据安全。阿里云的RDS SQL Server版还提供了弹性伸缩、自动备份恢复、安全性和高可用性功能,进一步优化性能和成本控制,并与AWS生态系统无缝集成,支持多种开发语言和框架。
14 2
|
1天前
|
SQL JSON atlas
实时计算 Flink版产品使用合集之SQL Server CDC是否支持抽取SQL Server视图
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6天前
|
SQL 数据处理 API
实时计算 Flink版产品使用合集之遇到SQL Server锁表问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 0
|
7天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之当 SQL Server 源数据库中的数据更新后,CDC 吐出的操作(op)是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
16 0
|
9天前
|
SQL XML Linux
SQL Server的版本
【5月更文挑战第14天】SQL Server的版本
23 3
|
9天前
|
SQL 关系型数据库 数据管理
Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统
【5月更文挑战第14天】Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统
18 2
|
9天前
|
SQL 存储 数据库连接
LabVIEW与SQL Server 2919 Express通讯
LabVIEW与SQL Server 2919 Express通讯
12 0
|
9天前
|
SQL Windows
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
17 4
|
9天前
|
SQL 数据可视化 Oracle
这篇文章教会你:从 SQL Server 移植到 DM(上)
这篇文章教会你:从 SQL Server 移植到 DM(上)