投递文章投递文章 投稿指南 RSS订阅RSS订阅

帮助DBA监视和跟踪IDS服务器的三个表

来源:赛迪网 发布时间:2008-07-24 收藏 投稿 字体:【
概述

Sysmaster 数据库是 IDS 系统中的一个伪数据库,它提供关于 IDS 服务器的共享内存结构的信息,对于监视服务器的状态和性能非常有帮助

我将通过一些示例解释如何使用 IDS 11(代码号“Cheetah”)中新的 Sysmaster 特性,并讨论以下七个 Sysmaster 表:

◆Sysnetclienttype、Sysnetglobal 和 Sysnetworkio,显示网络状态

◆Syssqltrace、Syssqltrace_info 和 Syssqltrace_iter,显示 SQL 配置文件和跟踪信息

◆Systhreads,记录线程和它们的等待统计数据

监视网络活动

有三个新表可以帮助 DBA 监视和跟踪 IDS 服务器的用户和客户机网络活动。这些表是:

◆Sysnetclienttype,显示每种客户机类型的网络活动概况

◆Sysnetglobal,提供系统网络的概况

◆Sysnetworkio,提供系统网络 I/O 的概况

Sysnetclienttype 表显示可以连接到服务器的所有客户机类型,以及在客户机和服务器之间生成的网络流量。总会显示的一个客户机类型是 sqlexec,这个类型分配给执行查询、插入、删除和更新的用户。随着时间的推移,会发生更多活动,所以 nc_reads 和 nc_writes 列会反映不断增加的网络读写数量。另一个客户机类型是 ontape。对于这个类型,当执行备份时,nc_reads 和 nc_writes 列显示的活动数量会增加。通过使用 Sysnetclienttype 表,可以按照连接服务器的客户机类型查看总体网络活动量。

Sysnetglobal 表包含一个记录,它显示全局设置和网络读写的总数。Sysnetworkio 表按照会话显示网络 I/O —— 因此,可以在这里查找消耗网络资源最多的会话。net_open_time、net_last_read 和 net_last_write 列包含最近一次网络活动的日期和时间,这些数据采用 Unix 时间格式,所以需要用 dbinfo 函数把它们转换为人可阅读的格式。下面的 SQL 语句按照会话显示最近一次网络活动的日期和时间:

清单1.显示最近一次网络活动的日期和时间

select

sid,

dbinfo( ‘utc_to_datetime’ , net_open_time ),

-- Date/time session started net connection

dbinfo( ‘utc_to_datetime’ , net_last_read ),

-- Date/time session performed last net read

dbinfo( ‘utc_to_datetime’ , net_last_write )

-- Date/time session performed last net

write from Sysnetworkio;

捕捉和跟踪SQL语句

最让兴奋的是,有三个新的 Sysmaster 表可以用来在运行 SQL 语句之后捕捉和跟踪 SQL 语句。要想使用这些表,必须在 ONCONFIG 文件中用 SQLTRACE 参数启用 SQL 跟踪特性,或者执行一个新的 dba 函数任务。这三个表是:

◆Syssqltrace,显示单一 SQL 语句的详细信息

◆Syssqltrace_info,包含 SQL 配置文件跟踪系统的信息

◆Syssqltrace_iter,列出 SQL 语句迭代器

这些都不是物理表,而是内存中的数据,所以在启用跟踪时,需要配置存储跟踪信息所用的内存量。当填满这个内存空间之后,就丢弃最旧的数据并替换为当前数据。在 ONCONFIG 文件中或通过新的 dba 函数任务启用跟踪需要四个参数:

◆Level 是要捕捉的数据的详细程度;这个参数可以设置为 off、low、med 或 high。默认值是 off,所以如果不启用跟踪,就不会捕捉信息。

◆Ntraces 是跟踪并存储在内存中的 SQL 语句的最大数量。达到这个数量之后,就会重用内存空间。最小数值是 500,最大数值取决于您希望使用的内存量。如果设置为 1000,那么第 1001 个 SQL 语句会重用第一个 SQL 语句的存储区域。

◆Size 是每个跟踪缓冲区的最大大小,以 KB 为单位,值的范围是从 1 到 100。

◆Mode 指定跟踪是针对所有用户(global),还是针对一个特定用户。

ONCONFIG 文件中的设置像下面这样:

SQLTRACE Level=low,Ntraces=1000,Size=2k,Mode=global

还可以使用新的 dba 函数临时启用这个特性,这在调试时非常方便。可以在 ONCONFIG 文件中禁用跟踪(换句话说,并不永久地启用它),只在需要时启用它。这个函数只能在新的 sysadmin 数据库上使用。下面的示例使用这个新函数启用跟踪。

清单2.使用新的 dba 函数临时启用跟踪

database sysadmin;

execute function task (“set sql tracing on”,1000, “2k”, “high”, “global” );

Once turned on, the next 1,000 (or whatever number is specified in Ntraces)

表1. Syssqltrace 列

sql_id  惟一的 SQL 执行 ID  
sql_address  语句在代码块中的地址  
sql_sid  运行 SQL 语句的用户的数据库会话 ID  
sql_uid  运行 SQL 语句的用户的用户 ID  
sql_stmttype  语句类型  
sql_stmtname  显示为单词形式的语句类型  
sql_finishtime  完成这个语句的时间(Unix 格式)  
sql_begintxtime  开始执行这个语句的时间  
sql_runtime  语句的执行时间  
sql_pgreads  这个 SQL 语句的磁盘读数量  
sql_bfreads  这个 SQL 语句的缓冲区读数量  
sql_rdcache  从缓冲区池读取页面的次数的百分比  
sql_bfidxreads  索引页面缓冲区读数量  
sql_pgwrites  写到磁盘的页面数量  
sql_bfwrites  修改并返回给缓冲区池的页面数量  
sql_wrcache  向缓冲区池写页面的次数的百分比  
sql_lockreq  这个 SQL 语句所需的锁的总数  
sql_lockwaits  这个 SQL 语句等待锁的次数  
sql_lockwttime  在执行这个 SQL 语句期间系统等待锁的时间  
sql_logspace  这个 SQL 语句在逻辑日志中使用的空间量  
sql_sorttotal  为这个语句运行的排序数量  
sql_sortdisk  在磁盘上运行的排序数量  
sql_sortmem  在内存中运行的排序数量  
sql_executions  这个 SQL 语句运行的次数  
sql_totaltime  运行这个语句花费的时间总量  
sql_avgtime  运行这个语句花费的时间平均量  
sql_maxtime  执行这个 SQL 语句花费的最大时间量  
sql_numiowaits  不得不等待 I/O 的次数  
sql_avgiowaits  这个 SQL 语句等待 I/O 的时间平均量  
sql_totaliowaits  这个 SQL 语句等待 I /O 的时间总量  
sql_rowspersec  每秒产生的平均行数  
sql_estcost  与这个 SQL 语句相关联的开销  
sql_estrows  这个 SQL 语句返回的行数的估计值  
sql_actualrows  这个 SQL 语句返回的行数  
sql_sqlerror  SQL 错误号  
sql_isamerror  RSAM/ISAM 错误号  
sql_isollevel  这个 SQL 语句的隔离级别  
sql_sqlmemory  执行这个 SQL 语句所需的字节数  
sql_numiterators  这个语句使用的迭代器数量  
sql_database  数据库名  
sql_numtables  执行这个 SQL 语句所用的表数量  
sql_tablelist  这个 SQL 语句中直接引用的表名的列表  
sql_statement  运行的 SQL 语句

启用跟踪之后,sqltrace 表会捕捉后面 1000 个(或者 Ntraces 中指定的数量)SQL 语句。onstat -g 命令将读取这个表,显示配置设置以及跟踪所捕捉到的所有 SQL 语句。表 1 显示 Syssqltrace 表的列(见表 1 所示)。

可以通过这个表了解 IDS 服务器上已经执行的 SQL 语句的详细信息。Syssqltrace 表包含 SQL 语句、执行 SQL 所用的资源、运行 SQL 花费的时间、磁盘/页面/缓冲区读和写的数量、使用的锁数量、排序数量和使用的内存量。另外,它还包含 IDS 优化器估计的运行这个 SQL 所要花费的时间。这个表非常有意思的一个好处是,可以对比 IDS 优化器估计的返回行数和实际的返回行数(sql_estrows 和 sql_actualrows)。如果这两个数值差异很大,就说明 IDS 优化器并不掌握关于表中行和索引数量的正确的统计数据。这意味着需要运行 update statistics,从而向优化器提供正确的数据。

在进行 IDS 调优时信息是关键因素

在进行监视和调优时,获得关于 IDS 服务器及其性能的丰富信息的能力是一个关键因素。IDS 11 中新增的这些 Sysmaster 表可以提供有用的信息。请在 dbaccess 或 Server Studio 中对这些新表运行一些选择语句,体会它们所提供的信息。

顶一下
(1)
100%
踩一下
(0)
0%
本文Tags:
与《帮助DBA监视和跟踪IDS服务器的三个表》相关的文章有:
  • 表情:
  •    
  • 评价:
用户名: 密码: 匿名 注册
最新评论 查看所有评论
About iTtang - 联系我们  - 专题列表 - 友情链接  -  高级搜索  -  帮助中心  -  您的意见