mysql 会话id_查看数据库中有哪些活动的事务,对应的会话id,执行的语句

select dbt.database_id,

DB_NAME(dbt.database_id) '数据库名',

dbt.transaction_id,

at.name,

at.transaction_begin_time,

case at.transaction_type --事务类型

when 1 then '读/写事务'

when 2 then '只读事务'

when 3 then '系统事务'

when 4 then '分布式事务'

end 'transaction类型',

case at.transaction_state

when 0 then '事务尚未完全初始化'

when 1 then '事务已初始化但尚未启动'

when 2 then '事务处于活动状态'

when 3 then '事务已结束。该状态用于只读事务'

when 4 then '已对分布式事务启动提交进程'

when 5 then '事务处于准备就绪状态且等待解析'

when 6 then '事务已提交'

when 7 then '事务正在被回滚'

when 8 then '事务已回滚'

end 'transaction状态',

st.session_id,

tt.text as '最近执行的语句',

es.program_name

from sys.dm_tran_database_transactions dbt

left join sys.dm_tran_active_transactions at

on dbt.transaction_id = at.transaction_id

left join sys.dm_tran_session_transactions st

on at.transaction_id = st.transaction_id

left join sys.dm_exec_sessions es

on st.session_id = es.session_id

left join sys.dm_exec_connections ec

on es.session_id = ec.session_id

outer apply sys.dm_exec_sql_text(ec.most_recent_sql_handle) tt

进一步查询,这个会话获取了哪些资源

select db_name(resource_database_id) 'DatabaseName',

object_name(resource_associated_entity_id) 'TableName',

request_type,

request_mode,

request_status

select *

from sys.dm_tran_locks

再进一步,查询这个会话有没有阻塞其他会话,以及阻塞时间:

select session_id, --某个会话

wait_duration_ms / 1000, --等待秒数

wait_type, --等待类型,可能是进程间的阻塞,也有可能是等待IO完成

blocking_session_id --被这个会话阻塞的,如果有的话

from sys.dm_os_waiting_tasks

where blocking_session_id = xxx

再进一步,合并上面2个:

select wt.session_id, --某个会话

wait_duration_ms / 1000 as 'wait seconds', --等待秒数

wait_type, --等待类型,可能是进程间的阻塞,也有可能是等待IO完成

blocking_session_id, --被这个会话阻塞的,如果有的话

tl.request_mode, --请求模式,比如S、IX、X

tl.request_type, --请求类型,比如Lock

tl.request_status --是否grant

from sys.dm_os_waiting_tasks wt

left join sys.dm_tran_locks tl

on wt.session_id = tl.request_session_id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值