报告并行查询次数、执行期间调整了多少工作进程,以及在merge和sort操作时加锁情况。
Parallel Query Management
-------------------------
Parallel Query Usage per sec per xact count % of total
------------------------- --------- --------- ------- ----------
Total Parallel Queries 0.1 8.0 16 n/a
优化器自动确定是否并行操作,以及为此使用多少工作进程。
WP Adjustments Made
Due to WP Limit 0.0 0.0 0 0.0 %
会话级的限制受“set parallel_degree” or “set scan_parallel_degree”参数控制。
Due to No WPs 0.0 0.0 0 0.0 %
缺乏可用的工作进程导致申请工作进程数减少。可适当增加“number of worker processes”
Merge Lock Requests per sec per xact count % of total
报告并行merge操作的锁请求数,很快授予锁的数目,下面3种类型锁的等待情况:
------------------------- --------- --------- ------- ----------
Network Buffer Merge Locks
Granted with no wait 4.9 438.5 877 56.2 %
Granted after wait 3.7 334.5 669 42.9 %
Result Buffer Merge Locks
Granted with no wait 0.0 0.0 0 0.0 %
Granted after wait 0.0 0.0 0 0.0 %
Work Table Merge Locks
Granted with no wait 0.1 7.0 14 0.9 %
Granted after wait 0.0 0.0 0 0.0 %
------------------------- --------- --------- -------
Total # of Requests 8.7 780.0 1560
Sort Buffer Waits per sec per xact count % of total
------------------------- --------- --------- ------- ----------
Total # of Waits 0.00.0 0 n/a
并行排序所用“排序缓冲区等待”锁。如果等待数较高,可考虑加大“number of sort buffers”的值。
======================================================================
单元三:监视执行SQL的访问情况
命令行:sp_sysmon “00:10:00”,monaccess
结果:
Monitor Access to Executing SQL(监视执行SQL的访问情况)
-------------------------------
per sec per xact count % of total
------------ ------------ ---------- ----------
Waits on Execution Plans 0.0 0.00 n/a
每个试图使用sp_showplan但必须等待获得访问查询计划的读资格,报告等待次数。
Number of SQL Text Overflows 0.0 0.0 0 n/a
SQL批文本超过文本缓冲区大小的溢出次数。
Maximum SQL Text Requested n/a n/a 0 n/a
(since beginning of sample)
“max SQL text monitored”(缺省为0)参数指定分配给每个连接用户的内存量,用以保存SQL文本到内存,供sever监视器共享。推荐值为1024。
======================================================================
单元四:事务概要
命令行:sp_sysmon “00:10:00”,xactsum
结果:
Transaction Profile(事务概要)
报告提交的事务数,要尽量减少多数据库事务的提交(一个事务对多数据库的访问)
Transaction Summary per sec per xact count % of total
------------------------- ------------ ------------ ---------- ----------
Committed Xacts 11.8 n/a 7073 n/a
Transaction Detailper sec per xactcount% of total
------------------------- ------------ ------------ ---------- ----------
Inserts
APL Heap Table 13.6 1.2 8189 100.0 %
如果大量堆表数据插入,结合查看锁的堆表最后一页锁情况,是否引起严重的锁争夺,随之调整相应的数据表,避免因为锁资源争夺引起性能降低。
APL Clustered Table 0.0 0.0 0 0.0 %
对全页锁的表插入数据行,注意可能引起的页分裂。
Data Only Lock Table 0.0 0.0 0 0.0 %
------------------------- ------------ ------------ ---------- ----------
Total Rows Inserted 13.6 1.2 8189 100.0 %
单元五:事务管理
命令行:sp_sysmon “00:10:00”,xactmgmt
结果:
Transaction Management(事务管理)
----------------------
用户日志cache(每个用户对应一个)降低了写入事务日志的次数,如果是多处理器系统还减少了事务日志当前页的争夺,因而提高了性能。可配置环境参数“user log cache size”(缺省最低2048字节),太小导致用户日志常满并频繁写入事务日志,太大则每个连接用户都扩大,又造成内存浪费。原则是配置不超过事务完成写入事务日志的长度。
ULC Flushes to Xact Log per sec per xact count % of total
各种类型导致写入事务日志的次数
------------------------- ------------ ------------ ---------- ----------
by Full ULC 0.0 0.0 0 0.0 %
如果% of total的值超过20%,考虑增加环境参数“user log cache size”的值。
by End Transaction 11.8 1.0 7095 95.5 %
以显式或隐式的rollback或commit标志事务结束。值大表示有很多短小事务。
by Change of Database 0.0 0.0 12 0.2 %
如果值大,考虑减低ULC中大于2K的缓冲池,降低或去除大块I/O池。
by System Log Record 0.5 0.0 321 4.3 %
其% of total值大于20%并且ULC长度大于2048,考虑降低ULC的长度。
by Other 0.0 0.0 0 0.0 %
------------------------- ------------ ------------ ----------
Total ULC Flushes 12.4 1.1 7428
单元六:索引管理
命令行:sp_sysmon “00:10:00”,indexmgmt
结果:
Index Management(索引管理)
索引可以加速数据检索,但同时又降低了更新的性能。
----------------
Nonclustered Maintenance per sec per xact count % of total
非聚簇索引维护情况:报告因为插入、删除、修改、页分裂等造成的索引维护次数。
------------------------- ------------ ------------ ---------- ----------
Ins/Upd Requiring Maint 0.0 0.0 0 n/a
影响索引的插入和修改的操作数,需要维护非聚簇索引。对于插入,有多少非聚簇索引,就需要增加多少索引维护的开销;对于修改,则只对相关的索引进行维护。
# of NC Ndx Maint 0.0 0.0 0 n/a
因为插入和修改需要对多少非聚簇索引进行维护。
Deletes Requiring Maint 0.0 0.0 0 n/a
# of NC Ndx Maint 0.0 0.0 0 n/a
影响索引的删除操作次数,以及需要维护的非聚簇索引数。
RID Upd from Clust Split 0.0 0.0 0 n/a
在APL(全页锁)的聚簇索引表发生页分裂次数,相应需要进行索引维护。
# of NC Ndx Maint 0.0 0.0 0 n/a
页分裂后对应的索引维护次数。
Upd/Del DOL Req Maint0.0 0.0 0 n/a
DOL表发生影响索引的修改删除操作次数。
# of DOL Ndx Maint 0.0 0.0 0 n/a
对应索引维护次数。
Page Splits 0.0 0.0 0 n/a
包括数据页、聚簇索引页和非聚簇索引页因为插入新行没有足够空间单元导致页分裂。页分裂造成修改索引页、修改页指针、增加锁资源争夺等从而降低性能。
如果页分裂度高(次数多),而又是对全页加锁表进行插入操作,并且表有组合键的聚簇索引,这时可通过改变那些索引的页分裂点来减少页分裂,即是说组合键的第一个键表中在用,第二个键列值按升序排列;也可考虑用fillfactor的合适配置来降低在聚簇索引的APL表的数据页以及非聚簇索引的叶子数据页上的页分裂。
建议对表插入行按照升序插入方式,这样发生页分裂点也是在插入行点而不是在页中间,这样能够提高性能。通过dbcc tune (ascinserts, 1, "表名")设置插入方式,0反之。
如果索引维护量大,会因为维护需要额外的进程、额外的I/O、额外的索引页锁从而影响性能。可以通过对比不同操作次数与导致的维护次数,如果维护次数很多,还发生页分裂、retries等现象,严重时可考虑不用索引。
单元七:锁管理
命令行:sp_sysmon “00:10:00”,locks
结果:
Lock Management(锁管理)
报告锁、死锁、锁提升和锁争夺的情况
---------------
Lock Summary(锁概述) per sec per xact count % of total
------------------------- ------------ ------------ ---------- ----------
Total Lock Requests 26.1 2.2 15676 n/a
总共的锁请求
Avg Lock Contention 0.0 0.0 0 0.0 %
平均锁争夺
Deadlock Percentage 0.0 0.0 0 0.0 %
死锁出现的比例
Lock Hashtable Lookups 26.1 2.2 15677 n/a
对hash表的表、页、行锁的查询次数。
Avg Hash Chain Length n/a n/a 0.00038 n/a
Hash链平均长度:采样期间每个hash桶的平均加锁数目。如果每个hash链超过4个锁,可用参数“lock hashtable size”调整扩大加锁hash表的大小,尤其是大型bcp可配置更大。
Lock Detail per sec per xactcount % of total
------------------------- ------------ ------------ ---------- ----------
对于各种类型的锁细节,重点查看其立即授予和等待情况。
Last Page Locks on Heaps 堆表最后页锁
Granted 13.6 1.2 8189 100.0 %
Waited 0.0 0.0 0 0.0 %
------------------------- ------------ ------------ ---------- ----------
Total Last Pg Locks 13.6 1.2 8189 100.0 %
如果堆表最后一页锁的争夺激烈(尤其是热对象的等待时间过长),考虑建立聚簇索引,或者表分区来解决锁资源争夺问题。
Deadlocks by Lock Type per sec per xact count % of total
------------------------- ------------ ------------ ---------- ----------
Total Deadlocks 0.0 0.00 n/a
死锁出现次数。当很多事务同时访问同一个数据库时,会加剧锁资源争夺,严重时事务之间会发生死锁。可
[1] [2] 下一页