- 启动监控
Monitor Tables主要存储一些监控信息(当前运行的SQL,I/O统计信息,当前进程情况)比如monDeviceIO表(select * from monDeviceIO),存储了DISK IO有关的信息。 Monitor表默认是不安装的,需要运行installmontables 脚本来安装。 installmontables 脚本可以在sybase_HOME/scripts目录下找到, C:\dbserver\sybase15\ASE-15_0\scripts.
几点说明
(1) 所有系统表都是只读的,因为他们都在内存中
(2)只有有mon_role角色的用户可以查询这些表
2. Sybase中有哪些Monitor talbes
可以用一下SQL查询出
>>>select * from master..monTables ORDER BY TableName
3. 修改monitoring相关配置
基于性能上的考虑,有些Monitor功能默认没有启用,需要另外执行命令启用, 用
sp_configure Monitoring可以找出所有Monitor相关的参数
用sp_configure Monitoring修改
比如要启用
>>>sp_configure 'enable monitoring',1
>>>sp_configure 'sql text pipe active',1
>>>sp_configure 'sql text pipe max messages',1
(2) 直接修改SYBASE_HOME目录下的 文件
找到Monitor段
[Monitoring]
enable monitoring = DEFAULT
sql text pipe active = DEFAULT
sql text pipe max messages = DEFAULT
plan text pipe active = DEFAULT
plan text pipe max messages = DEFAULT
statement pipe active = DEFAULT
statement pipe max messages = DEFAULT
errorlog pipe active = DEFAULT
errorlog pipe max messages = DEFAULT
deadlock pipe active = DEFAULT
deadlock pipe max messages = DEFAULT
wait event timing = DEFAULT
process wait events = DEFAULT
object lockwait timing = DEFAULT
SQL batch capture = DEFAULT
statement statistics active = DEFAULT
per object statistics active = DEFAULT
max SQL text monitored = DEFAULT
performance monitoring option = DEFAULT
enable stmt cache monitoring = DEFAULT
- sp_sysmon
sp_sysmon 报告包含大量独立的部分。您可以运行 sp_sysmon 来生成 完整报告或仅生成某个独立的部分。您还可以指定报告应运行的时 间间隔,或在所需时间段开始和结束时亲自执行存储过程。
sp_sysmon 仅报告采样周期内的监控数据。请确保根据有代表性的数 据做出调优决策。例如,为了对螺旋锁进行调优,应根据峰值利用 率报告中的数据做出决策。但是,应根据大量代表典型和峰值负载 的样本来做出减少引擎数的决策。
sp_sysmon "internal","model"
internal是监视时间。例如:"00:01:00"
model是模块的名称。包括'kernel','wpm','parallel','taskmgmt','appmgmt','esp','housekeeper','monaccess','xactsum','xactmgmt','indexmgmt','mdcache','locks','dcache','pcache','memory','recovery','diskio','netio'
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)
通过sp_sysmon对Adaptive Server系统运行情况有一个全面系统了解,有利于更好地熟悉系统性能,更为有效地进行系统管理,合理地利用和配置系统资源,达到系统性能调优的目的。
- sp_monitor
稍为详细一些的用法帮助见下:(极详细的用法帮助请再在后面加上",all")
sp_monitor 'help'
go
监视CPU、I/O的统计活动情况
- sp_showoptstats 查看统计信息和直方图
Adaptive Server 包括 sp_showoptstats,其功能与 optdiag 独立实用程序类 似,用于提取和在 XML 文档中显示系统表(如 systabstats 和 sysstatistics) 中各种类型的数据对象的统计信息和直方图。语法为:
sp_showoptstats [dbname[.owner[.[table_name] ] ] ], [.column], [option]
请参见《Adaptive Server 参考手册:过程》中的 sp_showoptstats。
- sp_configure
查看或配置系统参数。
- sp_lock
- sp_who
- sp_procqmode
- sp_estspace
- sp_cacheconfig
- Sybase DBCC用法
DBCC是一个实用命令集,用来检查一个数据库的逻辑一致性及物理一致性。在开发和应用中,DBCC是我们经常要使用的命令。
- ISQL工具
指令 | On 的含义 |
set noexec on/off | 分析SQL语句后,还要执行 |
set statistics io on/off | 统计SQL执行所需I/O |
set statistics time on/off | 统计SQL语句执行耗时 |
set showplan on/off | 显示查询计划 |
- 输出状态报告
sp_reportstats
监视配置参数的运行情况
sp_monitorconfig "open objects"
- 所有可用监控表的列表
select TableName from master..monTables
查询其中一个
select * from master..monEngine
go
若要列出特定监控表中的列,请输入:
select ColumnName, TypeName, Length, Description from master..monTableColumns
where TableName=”monProcessSQLText”
通过在 where 子句中替代任一监控表的名称并运行查询,您可以确 定此监控表中存在哪些列。
- 最消耗 CPU
• 若要确定当前执行的查询中哪些最消耗 CPU 并列出这些查询的文 本,请输入:
select s.SPID, s.CpuTime, t.LineNumber, t.SQLText
from master..monProcessStatement s, master..monProcessSQLText t where s.SPID = t.SPID
order by s.CpuTime DESC
- 高速缓存的命中率
• 若要确定 Adaptive Server 生存周期内的过程高速缓存的命中率,请 输入:
select "Procedure Cache Hit Ratio" = (Requests-Loads)*100/Requests from master..monProcedureCache
以下查询还提供数据高速缓存的命中率。在此示例中,命中率是针 对 10 分钟的间隔计算的,而不是针对服务器的整个生存周期:
select * into #moncache_prev from master..monDataCache waitfor delay "00:10:00" select * into #moncache_cur from master..monDataCache select p.CacheName,
"Hit Ratio"=((c.LogicalReads-p.LogicalReads) - (c.PhysicalReads - p.PhysicalReads))*100 / (c.LogicalReads - p.LogicalReads)
from #moncache_prev p, #moncache_cur c where p.CacheName = c.CacheName
若要计算特定采样期间的性能指标,请创建一个基线表,用以存储 采样期间开始时的监控值。可以通过从采样期间结束时的值中减去 基线值,来计算采样期间监控值的更改。
使用以下示例中的查询可计算数据高速缓存的命中率、创建基线、 计算采样期间的活动量。
• 若要创建一个存储过程,用以输出已执行的 SQL 以及当前执行存储过程的所有进程的反馈,请输入:
create procedure sp_backtrace @spid int as begin
select SQLText
from master..monProcessSQLText where SPID=@spid
print "Stacktrace:"
select ContextID, DBName, OwnerName, ObjectName from master..monProcessProcedures
where SPID=@spid end
• 若要确定用于 dbid 为 5、对象 ID 为 1424005073 的数据库中的表的 任何索引,请输入:
select DBID, ObjectID, LastUsedDate, UsedCount from master..monOpenObjectActivity
where dbid=5 and ObjectID=1424005073 and IndexID > 1
若要确定可否删除不被在服务器上运行的应用程序使用的索引,请 执行以下操作:
a 在访问相关表的应用程序中运行所有查询。确保 Adaptive Server
运行足够长时间,以便所有应用程序都执行其 select。
b 若要确定您的应用程序是否未在数据库中使用任何索引,请执行:
select DB = convert(char(20), db_name()),
TableName = convert(char(20), object_name(i.id, db_id())), IndexName = convert(char(20),i.name),
IndID = i.indid
from master..monOpenObjectActivity a, sysindexes i
where a.ObjectID =* i.id and a.IndexID =* i.indid
and (a.UsedCount = 0 or a.UsedCount is NULL) and i.indid > 0
and i.id > 99 -- No system tables order by 2, 4 asc