Timeout occurred while waiting for latch: class 'ACCESS_METHODS_DATASET_PARENT'
前些天某个SQL Server数据库的错误日志爆出如下错误:
Timeout occurred while waiting for latch: class 'ACCESS_METHODS_DATASET_PARENT', id 00000009A5670C58, type 4, Task 0x0000000B655BC508 : 188, waittime 300,
flags 0x1a, owning task 0x00000000170DC748. Continuing to wait.
第一感觉是并行查询的问题,于是翻笔记查看'ACCESS_METHODS_DATABASE_PARENT'到底是什么等待事件,可以参考sys.dm_os_latch_stats的官网解释来了解一二。
ACCESS_METHODS_DATASET_PARENT -- Used to synchronize child dataset access to the parent dataset during parallel operations.
官网的解释比较含糊,其实这个等待事件的本质是:SQL Server在执行TotalsSubTree超过查询阈值cost(默认为5)的SQL时会使用并行来完成,即多个threads并行完成一个SQL的查询,这样就需要各个线程进行信息交互以便实现一致性,如果SQL执行的时间很长,那么就需要长时间的获取latch,因此产生这种等待事件,其本质还是因为SQL太烂引起的,需要进行SQL优化。
写SQL来抓取引发问题的业务SQL,为方便起见创建为sp存储过程:
USE [master]
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[sp_findtask](@parent_task_address varbinary(8))
as
BEGIN
SELECT
t.spid,t.lastwaittype,t.open_tran,t.status,t.hostname,t.program_name,t.loginame,dc.text
FROM master.sys.sysprocesses t cross apply master.sys.dm_exec_sql_text(t.sql_handle) dc
WHERE spid in (select distinct session_id from sys.dm_os_tasks where parent_task_address=@parent_task_address)
END
GO
涉及到的几个视图:sys.sysprocesses,sys.dm_os_tasks都可以通过官网查到相关列的说明,这里不再详述。对于SQLOS任务调度涉及的概念参考:SQLOS任务调度算法
这样下次出现问题,只要能从错误日志中快速找到owning task的address(就是sys.dm_os_tasks中的parent_task_address列),就可以得到问题SQL的详细信息了。
在本例中我们先去找由于latch timeout生成的系统转储文件,然后再用windbg进行分析即可。由于SQL Server只会在第一次报出latch timeout时生成转储文件,我们可以设置838trace来使每次报错都生成dump,以便获取更准确和完整的信息。
dbcc traceon(838,-1)
Timeout occurred while waiting for latch: class 'ACCESS_METHODS_DATASET_PARENT'的更多相关文章
- Timeout occurred while waiting for latch: class 'COLUMNSTORE_ROWGROUP_COLLECTION'
今天发现线上数据库主从延迟严重: SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.da ...
- ORA-04021 timeout occurred while waiting to lock object
用户要求删除一个数据库的用户 GREENPASS,在删除的过程中,报错如下: drop user GREENPASS * ERROR at line 1: ORA-04021: timeout occ ...
- ORA-04021:timeout occurred while waiting to lock object
编译某存储过程 ORA-04021 timeout occurred while waiting to lock object stringstringstringstringstring Cause ...
- org.eclipse.jdi.TimeoutException:Timeout occurred while waiting for packet 1983.occurred
eclipse 增大junit内存配置 现象:eclipse在junit测试的时候出现如下错误 org.eclipse.jdi.TimeoutException:Timeout occurred wh ...
- org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 421. occured resuming VM.
环境: 导入excel的时候,会根据路径,读取EXCEL的数据. 原因: 电脑上的防火墙关闭
- 关于ORA-04021解决办法(timeout occurred while waiting to lock object)
某个应用正在锁定该表或者包 表为 select b.SID,b.SERIAL#,c.SQL_TEXT from v$locked_object a, v$session b, v$sqlarea c ...
- ORA-12170: TNS:Connect timeout occurred
VM 作为ORACLE 服务器,客户端登陆提示超时,本地连接使用网络连接正常. D:>sqlplus system/oracle123@//192.168.63.121:15021/pdb01 ...
- Error524 源站处理超时 Error 524: A timeout occurred
https://su.baidu.com/helps/index.html#/4/5a61e4b5b34f697f13234a5b Error524 源站处理超时 更新时间:2018-01-19 20 ...
- PLSQL报错: ORA-12170:TNS connect timeout occurred
本人的问题已解决,先在安装oracle的服务器上黑窗口输入tnsping,提示说no listener,这是监听服务没有打开. 打开服务后还是不行,最后原因是服务器的网络有防火墙的问题,关掉防火墙连接 ...
随机推荐
- Chrome 浏览器最牛插件之一 Vimium
导航当页: ? 显示help,查询vimium的所有使用方法 h 向左滚动 j 向下滚动 k 向上滚动 l 向右滚动 gg 滚动到顶部 G 滚动到底部 d 向下滚动半页 u 向上滚动半页面 f 显示链 ...
- Ubuntu 安装网卡驱动
搭建Linux平台的无线热点,需要无线网卡和驱动都要支持 AP. 试了下Ubuntu平台默认驱动并不支持AP模式,所以需要更换驱动,具体操作步骤如下: 1.找到自己网卡芯片的型号,由于我的环境是搭建在 ...
- shiro源码篇 - 疑问解答与系列总结,你值得拥有
前言 开心一刻 小明的朋友骨折了,小明去他家里看他.他老婆很细心的为他换药,敷药,然后出去买菜.小明满脸羡慕地说:你特么真幸福啊,你老婆对你那么好!朋友哭得稀里哗啦的说:兄弟你别说了,我幸福个锤子,就 ...
- [转]PHP时区/MySql时区/Linux时区
本文转自:https://blog.csdn.net/watermelonmk/article/details/82669062 问题背景:手头上有个国外的项目,为了所谓的国际化,得将时区修改至[美国 ...
- mysql+高可用MMM
一. MMM 简介:MMM 即 Multi-Master Replication Manager for MySQL:mysql 多主复制管理器,基于 perl 实现,关于 mysql 主主复制配置的 ...
- T-SQL基础(二)之关联查询
在上篇博文中介绍了T-SQL查询的基础知识,本篇主要介绍稍微复杂的查询形式. 表运算符 表运算符的作用是把为其提供的表作为输入,经过逻辑查询处理,返回一个表结果.SQL Server支持四个表运算符: ...
- 分页Sql语句
第一种 Top剔除法.去除Top (pageIndex-1)*PageSize * FROM dbo.SBD_EXCHANGE_BILL ) EB_ID FROM dbo.SBD_EXCHANGE_B ...
- [angularjs] angularjs系列笔记(二)指令
重复HTML元素 ng-repeat指令可以重复HTML元素 <body> <div ng-app="Home" ng-controller="inde ...
- Spring Security Oauth2 示例
所有示例的依赖如下(均是SpringBoot项目) pom.xml <dependencies> <dependency> <groupId>org.springf ...
- ubuntu中subline无法使用搜狗输入法
今天使用subline编写python程序,发现在ubuntu下无法调用搜狗输入法输入中文,结果一番搜索发现github上的sublime-text-imfix项目能修复此问题,项目地址是:https ...