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,这是监听服务没有打开. 打开服务后还是不行,最后原因是服务器的网络有防火墙的问题,关掉防火墙连接 ...
随机推荐
- Python机器学习笔记 使用sklearn做特征工程和数据挖掘
特征处理是特征工程的核心部分,特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样式确定的步骤,更多的是工程上的经验和权衡,因此没有统一的方法,但是sklearn提供了较为完整的特征处 ...
- 【Go】go get 自动代理
原文链接:https://blog.thinkeridea.com/201903/go/go_get_proxy.html 最近发现技术交流群里很多人在询问 go get 墙外包失败的问题,大家给了很 ...
- 隐马尔可夫模型(HMM)及Viterbi算法
HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那是如雷贯耳.那么,这个模型到底长什么样?具体的原理又是什么呢?有什么具体的应用场景呢?本文将会解答这些疑惑. 本文将通过具体形象的例子来引 ...
- [转]Rancher 快速上手指南操作(1)
本文转自:http://www.cppblog.com/zhiyewang/archive/2016/03/17/213053.aspx Rancher 快速上手指南操作(1)该指南知道用户如何快速的 ...
- Linq中的Select与Select many
Select与Select Many 之前在项目中查询数据库中的数据,都是通过sql语句来查询的,但是随着时代的发展,微软在.Net Framework 4.5版中推出的一个主要的特性——LINQ. ...
- ADO.NET基础学习 一(连接数据库)
(记录下方便自己复习) 概念 简单地理解为用来连接数据库的类. 工作流程 ①Connection对象用来连接数据库. 两种连接方式:Windows身份验证 / sqlserver验证 private ...
- 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径
最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...
- eclipse下svn的使用
描述:本篇用解决下面的案例中的问题来描述eclipse svn插件的使用. a.案例 某研发团队开发了一款名为App,目前已发布v1.0版本.此项目初期已有部分基础代码, 研发团队再此基础代码上经过3 ...
- Hibernate入门(三)
持久化类的编写规则: 1.持久化类需要提供无参的构造方法.因为在Hibernate的底层需要使用反射生成的实例. 2.持久化类的属性需要私有,对私有的属性提供共有的get和set方法.因为在Hiber ...
- css重写checkbox样式
一.前言 默认的checkbox长这样: <p> <span><input type="checkbox" /></span> &l ...