sp_object_stats <interval>[, <top_n>[, <dbname>, <objname>[, <rpt_option>]]]
<interval>
指定采样的时间范围。必须采用 HH:MM:SS 格式,例如“00:20:00”。
`<top_n></p>
<p>是要报告的对象的数目,按争用顺序。缺省值为 10。</p>
<p><dbname></p>
<p>是要报告的数据库的名称。如果没有给出数据库名,则报告所有数据库中对象的争用情况。</p>
<p><objname></p>
<p>是要报告的表的名称。如果指定了表名,则也必须指定数据库名。</p>
<p><rpt_option>`
指定报告类型:
报告有关服务器范围内前 10 个对象的锁统计信息:
sp_object_stats "00:20:00"
只报告 pubtune 数据库中的表,并且列出争用程度最高的 5 个表:
sp_object_stats "00:20:00", 5, pubtune
只显示具有最高锁定活动的表的名称,即使争用和死锁情况并未发生:
sp_object_stats "00:15:00", @rpt_option = "rpt_objlist"
使用 sp_object_stats 时,还存在一些其它注意事项:
Object Name: pubtune..titles (dbid=7, objid=208003772,lockscheme=Datapages)
Page Locks SH_PAGE UP_PAGE EX_PAGE$
---------- ---------- ---------- ----------
Grants: 94488 4052 4828
Waits: 532 500 776
Deadlocks: 4 0 24
Wait-time: 20603764 ms 14265708 ms 2831556 ms
Contention: 0.56% 10.98% 13.79%
*** Consider altering pubtune..titles to Datarows locking.
这些值的含义为:
- Grants – 立即授予锁的次数。
- Waits – 需要锁的任务要等待的次数。
- Deadlocks – 发生死锁的数目。
- Wait-time – 所有任务在等待锁时所用的总毫秒数。
- Contention – 任务必须等待或遇到死锁的次数所占的百分比。
- 如果表采用全页锁定,建议改为数据页锁定。
- 如果表使用数据页锁定,建议改为数据行锁定。
dbcc traceoff (1213)
发出此查询以确定当前是否已设置跟踪标志 1213:
select * from sysoptions where number = 1213
| 列名 | 数据类型 | 说明 |
|---|---|---|
| dbid | smallint | 数据库 ID |
| objid | int | 对象 ID |
| lockscheme | smallint | 整数值 1-3:1 – 全页(数据页和索引页)2 – 数据页3 – 数据行 |
| page_type | smallint | 0 – 数据页1 – 索引页 |
| stat_name | char(30) | 由此行表示的统计信息stat_name 列中的值由以下三部分组成:第一部分是 "ex"、"sh" 或 "up",分别表示排它锁、共享锁或更新锁。第二部分是 "pg" 或 "row",分别表示页锁或行锁。第三部分是 "grants"、"waits"、"deadlocks" 和 "waittime",分别表示立即授予的锁、需要等待释放其它锁的锁、死锁或为获取锁而等待的时间。 |
| stat_value | float | 授予、等待或死锁的数目,或者总等待时间。 |