上接SQL SERVER 查询性能优化——分析事务与锁(二)
接下来看看SP_WHO2这个系统存储过程,如果你查询这个系统存储过程的源代码,就可以发现这个系统存储过程是整理master.sys.sysprocesses系统视图中的内容。在此用sp_who2来说明一下。
第一步,在查询分析器中执行例二,例三代码。(就是上一篇文章SQL SERVER 查询性能优化——分析事务与锁(二)中的示例)--例二
第二步,再打开一个查询分析器界面,在此界面中输入exec sp_who2,如下图,在此界面中你可以很容易的观察到锁与被锁的关联,看到进程“56”被“53”锁住。
Use test Go Begin tran update book set Name='MS SQL 2008' where bookid=1 ---切换到另一个查询界面,执行以下代码 --例三 Use test Go select * from Book where bookid=1 go
你可以通过dbcc inputbuffer(53)来查看进程“53”所执行的查询语句。如下图1、2。
Sql 2008中的 wbk_pde_list表
图1
Book表
图2
当然,如果你使用SQL SERVER 2005也可以通过Microsoft SQL Server Management Studio中的“活动监视器--》进程信息”直接以鼠标双击某条进程,便可以看到此进程所执行的查询语句。如下图3。
图3
你还可以通过sp_lock系统存储过程来观察进程“53”和“56”的结果。执行如下命令
Exec sp_lock 53
Exec sp_lock 56
然后得到如下图结果:
Book表
图4
以上语句执行结果,同SQL SERVER 2005中的Microsoft SQL Server Management Studio中的“活动监视器--》按进程分类的锁”有异曲同工之处。
Sql 2005
图5
当然在Sql 2008中就只能执行以下的SQL 语句了。
Exec sp_lock 54
Exec sp_lock 55
图6
如上,图6中的Type字段如果是PAG,则Resource表示的是该分页在数据库的第几个文件上。以及分页编号。我们可以通过DBCC PAGE来观察该分布。
如果indId为1,则表示为聚集索引,则dbcc page查询出来的是整个分页的细节,如果IndId大于1,则表示为非聚集索引,则dbcc page查询出来的是索引键值与哈希值。如下图7。
Dbcc traceon(3604)
dbcc page(28,1,10683,3)
Book
图7
结合图5对象ID、说明与图7中的KeyHashValue字段相比较,就可以进一步看出什么样的记录被锁住了。
也可以结合结合图6中的RESOURCE与图7中的KeyHashValue字段相比较,就可以进一步看出什么样的记录被锁住了。
注:此处的图7不是图6的明细。
select db_name(28) 数据库名称,OBJECT_NAME(117575457) 表名 ,(select name from sys.indexes where OBJECT_ID=117575457 and index_ID=54) 索引名称
另外可以打开 SQL Profiler观察多人交互情况。
综上所述,你可以从以下几方面来观察数据库是否因为锁与被锁而造成系统运行出现问题。
1.通过Microsoft SQL Server Management Studio或SP_WHO2系统存储过程来观察数据库中是否有许多进程被锁。
2.观察master.sys.sysprocesses系统视图内,被锁进程中的waittime字段的值是否异常的大。
3.SQL Profiler工具所录制的结果中,有许多attention事件,代表SQL语句执行过久没有响应,前端程序放弃执行。
4.SQL SERVER所在服务器并没有显的很忙碌。例如,CPU,内存,硬盘,网络等硬件资源使用率并不是很高,但系统的效率却不高,或是正相反,上述资源由于某个操作而持续高度使用,但是该操作一直做不完,导致它持有的资源都无法释放。
5.通过Microsoft SQL Server Management Studio、性能监视器、SQL PROFILER等结果,进行交叉分析以相互印证。
相关推荐
书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...
书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...
这篇博客“事务管理(二)——SQL SERVER的事务管理”可能详细介绍了SQL Server如何处理事务,包括事务的特性、隔离级别以及如何处理事务中的并发问题,如死锁。 首先,事务有四个基本特性,即原子性(Atomicity)...
在SQL Server中,数据库文件是存储数据和元数据的核心组件,它们构成了数据库的基础。本案例提供的"图书订购"数据库文件包含两个主要部分:mdf(主数据文件)和ldf(日志文件)。这两个文件是SQL Server数据库不可或...
《SQL Server 2005数据库实践教程——开发与设计篇》是一份全面介绍SQL Server 2005数据库系统使用的电子教案。这份教程共分为7个章节,旨在帮助学习者掌握SQL Server 2005的核心概念、功能以及实际应用技巧。下面,...
9. **事务与并发控制**:理解事务的概念,ACID属性(原子性、一致性、隔离性、持久性),以及SQL Server 2000中的锁机制和并发控制策略。 10. **报表服务**:介绍SQL Server 2000的报表服务,如何创建、管理和部署...
### SQL Server性能优化详解 ...综上所述,SQL Server性能优化是一个多方面的过程,涉及到索引管理、查询优化、存储过程的应用等多个方面。通过合理的设计和维护,可以显著提升数据库系统的性能表现。
6. **索引与查询优化**:探讨如何创建和管理索引以提高查询效率,以及使用查询分析器进行性能调优。 7. **备份与恢复策略**:介绍SQL Server 2008的备份选项,包括完整备份、差异备份、日志备份,以及如何制定恢复...
它提供了高效的数据存储、查询、分析和安全功能,广泛应用于各种业务系统。在Java应用程序中与SQL Server 2016交互,通常需要依赖特定的数据库驱动程序,这就是`sqljdbc42.jar`的角色。 `sqljdbc42.jar`是一个Java...
《数据库应用技术——SQL ...通过《数据库应用技术——SQL Server 2000简明教程》的学习,你将具备使用SQL Server 2000管理数据库、编写T-SQL脚本、优化性能和构建报表的能力,为实际工作或进一步学习打下坚实的基础。
在SQL Server 2005数据库实践中,开发者和设计师会遇到各种挑战,包括但不限于数据存储、查询优化、安全性管理以及数据库设计。本实践教程聚焦于这些关键领域,以帮助学习者掌握SQL Server 2005的核心功能和最佳实践...
《信息系统开发教程——使用C#和SQL Server 2005》是一份深入探讨如何结合C#编程语言与Microsoft SQL Server 2005数据库管理系统进行信息系统开发的教程。本教程旨在帮助开发者全面掌握这两项关键技术,从而构建高效...
《大型数据库系统 管理、设计实例分析--基于SQL Server》这门大学课程的课件,涵盖了SQL Server 2000的核心概念和技术。在深入理解这些知识点之前,我们首先要明白SQL Server作为一款关系型数据库管理系统(RDBMS)...
《数据库系统原理与应用》是计算机科学领域的一本经典教材,尤其在讲解SQL Server 2012这一数据库管理系统时,提供了深入浅出的理论知识和实际操作指导。本电子教案针对第三版进行了全面更新,旨在帮助学生和教师更...
《SQL Server 2000 图解教程——下》是一本专门为初学者设计的数据库管理教程,通过丰富的图像和简洁的文字,深入浅出地讲解了SQL Server 2000的核心概念和技术。在这个部分,我们将重点探讨SQL Server 2000在数据...
【ASP+SQL+Server+程序代码系统——图书管理】是一个基于Web的图书管理应用程序,它利用Active Server Pages(ASP)技术、SQL Server数据库管理和Microsoft Server Web服务器的强大功能,实现高效、安全的图书信息...
《SQL Server 2012数据库技术与应用》是一门深度探讨关系型数据库管理系统SQL Server 2012的课程,旨在帮助学习者掌握数据库设计、管理、优化以及实际应用等核心技能。作为微课版,它可能包含了视频教程、实践案例、...
SQL Server 2005提供了许多工具和功能,如查询分析器、索引优化顾问和性能计数器,帮助监控和改善系统性能。理解查询计划、索引策略和资源调优是提升系统响应速度的关键。 备份和恢复策略是保障数据安全的重要环节...