摘要:
这几天看了下范伟主演的<<跟踪孔令学>>,再一次欣赏了范伟精湛的演技特别是那种憨厚的表情。看完后,让我想起了SQLServer中的跟踪与反跟踪技术。觉得这部分内容值得写一篇文章和大家分享分享。了解SQLServer跟踪技术能让我们比较简单的在运行时实时的获取SQLServer的内部运作。这种获取方式比我们去使用跟踪标志、动态管理视图等来的方便简单的多。说到跟踪,很多人会想起SQL Profiler。SQL Profiler仅仅是一个GUI,SQL Trace才是本质。SQL Trace是构建服务器跟踪和Profiler的基础。如果你了解到这点,那你就会毫不犹豫的在生产环 阅读全文
posted @ 2012-01-04 20:57
qanholas
阅读(741)
评论(1)
推荐(1)
摘要:
在谈谈SQLServer的锁机制之前,来思考以下这个场景:当你在酷暑的时候骑着自己的小车往目的地行走时,路上连续遇到几个时间很长的红灯,是不是很郁闷?有时候你可能实在受不了闯了个红灯,其实在大部分情况下问题不大,如果通行的汽车很多那就不好说了。因为不遵守规则的人太多,都为了达到目的去走捷径,不愿意等待。这样才有了交警。交警的作用就是维护这些红绿灯的规则。这些红绿灯就像锁一样,锁住或延长你去目的地的时间。但是如果没有交警大家又不自由遵守红绿灯规则会导致什么呢?大家想想都知道。 这个系列的一篇文章中提供的事务管理器中有个锁管理器就是这里的交警。它维护着SQLServer中的锁。前段提到的大部分情. 阅读全文
posted @ 2012-01-04 20:26
qanholas
阅读(335)
评论(0)
推荐(0)
摘要:
跟踪标志说明260打印有关扩展存储过程动态链接库 (DLL) 的版本控制信息。有关__GetXpVersion()的详细信息,请参阅创建扩展存储过程。作用域:全局或会话1204返回参与死锁的锁的资源和类型,以及受影响的当前命令。作用域:仅全局1211基于内存不足或基于锁数禁用锁升级。SQL Server 数据库引擎不会将行锁或页锁升级到表锁。使用此跟踪标志可生成过多的锁数目。这样会降低数据库引擎的性能,或因为内存不足而导致 1204 错误(无法分配锁资源)。有关详细信息,请参阅锁升级(数据库引擎)。如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但是,由于在所有 阅读全文
posted @ 2012-01-04 20:22
qanholas
阅读(883)
评论(0)
推荐(0)
摘要:
例子:SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION; SELECT * FROM User2行版本控制隔离:优势使用行版本控制的隔离级别具有以下优点:· 读取操作检索一致的数据库快照。· SELECT 语句在读取操作过程中不锁定数据(读取器不阻塞编写器,编写器也不阻塞读取器)。· SELECT 语句可以在其他事务更新行时访问最后提交的行值,而不阻塞应用程序。· 死锁的数量减少。· 事务所需的锁的数量减少,这减少了管理锁所需的系统开销。· 锁升级的次数减 阅读全文
posted @ 2012-01-04 19:50
qanholas
阅读(2585)
评论(0)
推荐(0)
摘要:
--认清SQL_Server_2005的基于行版本控制的两种隔离级别--By:zc_0101 Date:2010-03-31--快照隔离级别(snapshot)和已提交读快照隔离级别(readcommittedsnapshot)--特点:在这两种隔离级别下,读取数据时不再请求共享锁,而且永远不会与修改进程的数据发生冲突,如果请求的--行被锁定(例如正在被更新),SQL_Server会从行版本存储区返回最早的关于该行的记录(SQL_server会在--更新时将之前的行数据在tempdb库中形成一个链接列表,当然目前我没有搞清楚之前的数据到底存到了那里)--这两个快照提供了乐观的并发模型--说明: 阅读全文
posted @ 2012-01-04 17:51
qanholas
阅读(792)
评论(1)
推荐(0)
浙公网安备 33010602011771号