关于锁和内存使用的DMV

查看连接当前数据库的SPID所加的锁

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT DB_NAME(resource_database_id) AS DatabaseName

, request_session_id

, resource_type

, CASE

WHEN resource_type = 'OBJECT'

THEN OBJECT_NAME(resource_associated_entity_id)

WHEN resource_type IN ('KEY', 'PAGE', 'RID')

THEN (SELECT OBJECT_NAME(OBJECT_ID)

FROM sys.partitions p

WHERE p.hobt_id = l.resource_associated_entity_id)

END AS resource_type_name

, request_status

, request_mode

FROM sys.dm_tran_locks l

WHERE request_session_id !=@@spid

ORDER BY request_session_id

结果如图:

如果像查看更多的锁,调整where条件即可

查看没关闭事务的空闲Session

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT es.session_id, es.login_name, es.host_name, est.text

, cn.last_read, cn.last_write, es.program_name

FROM sys.dm_exec_sessions es

INNER JOIN sys.dm_tran_session_transactions st

         ON es.session_id = st.session_id

INNER JOIN sys.dm_exec_connections cn

         ON es.session_id = cn.session_id

CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est

LEFT OUTER JOIN sys.dm_exec_requests er

         ON st.session_id = er.session_id

             AND er.session_id IS NULL

时间: 2024-08-31 03:30:03

关于锁和内存使用的DMV的相关文章

《Java并发编程的艺术》一一3.5 锁的内存语义

3.5 锁的内存语义 众所周知,锁可以让临界区互斥执行.这里将介绍锁的另一个同样重要,但常常被忽视的功能:锁的内存语义.3.5.1 锁的释放-获取建立的happens-before关系 锁是Java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息. 下面是锁释放-获取的示例代码. class MonitorExample { int a = 0; public synchronized void writer() { // 1 a++; //

Java并发编程系列之四:volatile和锁的内存语义

前言 在前面的文章中已经提到过volatile关键字的底层实现原理:处理器的LOCK指令会使得其他处理器将缓存刷新到内存中(确切说是主存)以及会把其他处理器的缓存设置为无效.这里的内存语义则说的是在JMM中的实现,那么为什么要理解volatile和锁在JMM中的内存语义呢?主要原因是这部分内容是与程序开发息息相关的,所以在高并发量的系统中,如果对这块知识的了解欠缺的话将无法设计出优雅支持高并发的系统(之前广被吐槽的12306,现在勉强能够支持千万级别的访问量了). volatile的内存语义 简

sqlserver-加锁导致内存占用逐渐加大?怎么办

问题描述 加锁导致内存占用逐渐加大?怎么办 2 这是第一个窗体的代码 3 4 private void button1_Click(object sender, EventArgs e) 5 { 6 while (true) 7 { 8 SqlConnection conn = new SqlConnection("Data Source=DMWIAJHLRQMX6QS;Initial Catalog=test;Persist Security Info=True;User ID=sa;Pwd=

深入理解Java内存模型(五)——锁

锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchronized void writer() { //1 a++; //2 } //3 public synchronized void reader() { //4 int i = a; //5 -- }

简单介绍SQL Server中的自旋锁_MsSql

为什么我们需要自旋锁? 用闩锁同步多个线程间数据结构访问,在每个共享数据结构前都放置一个闩锁没有意义的.闩锁与此紧密关联:当你不能获得闩锁(因为其他人已经有一个不兼容的闩锁拿到),查询就会强制等待,并进入挂起(SUSPENDED)状态.查询在挂起状态等待直到可以拿到闩锁,然后就会进入可执行(RUNNABLE)状态.对于查询执行只要没有可用的CPU,查询就一直在可执行(RUNNABLE)状态.一旦CPU有空闲,查询会进入运行(RUNNING)状态,最后成功获取到闩锁,用它来保护访问的共享数据结构.

简单介绍SQL Server中的自旋锁

为什么我们需要自旋锁? 用闩锁同步多个线程间数据结构访问,在每个共享数据结构前都放置一个闩锁没有意义的.闩锁与此紧密关联:当你不能获得闩锁(因为其他人已经有一个不兼容的闩锁拿到),查询就会强制等待,并进入挂起(SUSPENDED)状态.查询在挂起状态等待直到可以拿到闩锁,然后就会进入可执行(RUNNABLE)状态.对于查询执行只要没有可用的CPU,查询就一直在可执行(RUNNABLE)状态.一旦CPU有空闲,查询会进入运行(RUNNING)状态,最后成功获取到闩锁,用它来保护访问的共享数据结构.

在驱动和应用程序间共享内存

在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存.两种最容易的技术是:    l 应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存.(应用程序分配共享内存)    l 由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程序.(驱动程序分配共享内存)    使用IOCTL共享Buffer:    使用一个IOCT描述的Buffer,在驱动和用户程序间共享内存是内存共享最简单的实现形式.毕竟,IOCTL也

擦亮自己的眼睛去看SQL Server之谈谈锁机制

在谈谈SQL Server的锁机制之前,来思考以下这个场景:当你在酷暑的时候骑着自己的小车往目的地行走时,路上连续遇到几个时间很长的红灯,是不是很郁闷?有时候 你可能实在受不了闯了个红灯,其实在大部分情况下问题不大,如果通行的汽车很多那就不好说了.因为不遵守规则的人太多,都为了达到目的去走捷径,不愿意等 待.这样才有了交警.交警的作用就是维护这些红绿灯的规则.这些红绿灯就像锁一样,锁住或延长你去目的地的时间.但是如果没有交警大家又不自由遵守红绿灯 规则会导致什么呢?大家想想都知道. 这个系列的一

内存屏障

原文地址  作者:Martin Thompson  译者:一粟   校对:无叶,方腾飞 本文我将和大家讨论并发编程中最基础的一项技术:内存屏障或内存栅栏,也就是让一个CPU处理单元中的内存状态对其它处理单元可见的一项技术. CPU使用了很多优化技术来实现一个目标:CPU执行单元的速度要远超主存访问速度.在上一篇文章 "Write Combing (合并写)"中我已经介绍了其中的一项技术.CPU避免内存访问延迟最常见的技术是将指令管道化,然后尽量重排这些管道的执行以最大化利用缓存,从而把