本篇文章描述了通过sp_sysmon对Adaptive Server系统运行情况有一个全面系统了解,有利于更好地熟悉系统性能,更为有效地进行系统管理,合理地利用和配置系统资源,达到系统性能调优的目的。
从18个方面了解在用系统性能状况,并在适当的时候利用环境参数进行性能调优:
1、内核管理(kernal) 2、应用管理(appmgmt) 3、数据缓存管理(dcache)
4、ESP管理(esp) 5、索引管理(indexmgmt) 6、锁管理(locks)
7、内存管理(memory) 8、元数据高速缓存管理(mdcache)9、任务管理(taskmgmt)
10、监视器访问SQL的执行(monaccess) 11、网络I/O管理(netio)
12、并行查询管理(parallel)13、过程缓存管理(pcache)14、恢复管理(recovery)
15、事务管理(xactmgmt)16、事务概要(xactsum) 17、磁盘I/O管理(diskio)
18、工作进程管理(wpm)
括号后英文短词是该模块参数。
环境: 1、用户数据库中有练习所用数据表auths和article
2、数据表各有10万行数据
3、用户具有查询、修改、删除等基本的数据库表操作权限
步骤:执行sp_sysmon “00:10:00”(server级系统存贮过程,不需要打开某个数据库),或者执行如下格式的过程,查看具体操作批命令对应系统性能情况:
sp_sysmon begin_sample
SQL语句或者存贮过程
sp_sysmon commit_sample
本实验采用 sp_sysmon “hh:mm:ss”,性能模块名。
结论:通过此练习,可了解当前系统在各方面的系统运行状况,性能出现什么问题和不平衡不协调之处,学会使用相应的参数和措施进行解决和调优,不断比较对照调整前后的性能状况,最终改善系统性能。
说明:1、该命令执行结果集的开头相同如下,各分块练习不再一一列示:
======================================================================
Sybase Adaptive Server Enterprise System Performance Report
======================================================================
Server Version: Adaptive Server Enterprise/11.9.2/1031/P/NT (IX86)/OS 3.
Server Name: Server is Unnamed
Run Date: May 28, 2001
Statistics Cleared at: 15:57:27
Statistics Sampled at: 16:07:28
Sample Interval: 00:10:00
2、执行结果集的每列信息提示:
per sec : 采样期间每秒的平均值
per xact: 采样期间每提交一个事务的平均值
count : 采样期间每秒的总计值
% of total: 占总数的百分比,根据不同情况各有不同
3、结果集对应给出性能情况描述、分析以及可调性说明
4、本练习只给出部分模块的监视结果(可能有删节),用sp_sysmon “hh:mm:ss”可看全部详细情况。
索引管理
命令行: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 Maint 0.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等现象,严重时可考虑不用索引。