页面树结构
转至元数据结尾
转至元数据起始

数据库在使用时间长了之后,往往会随着数据量的增加,出现查询性能下降的情况。这种情况往往可以通过优化表的索引来解决。对于Sybase数据库,可以通过下面的方式定位。

配置Sybase

ASE12.5.0.3开始,供了一整套用于系统监控的proxy table。默认安装下,这些新的监控表数据库中是没有的,需要执行以下步骤安装,这里假设用户的server名为SYBASE

  1. 增加loopback服务。使用isql登录服务器,执行以下命令
    isql -Usa -P -SSYBASE
    1>use master
    2>go
    1>sp_addserver loopback, null, SYBASE
    2>go
  2. 在CMD下,执行%SYBASE%/ASE-12.5/script目录下installmontables,安装MDA表。这些表会安装在master数据库中。

    isql -Usa -P -SSYBASE -i installmontables

  3. 给sa授权mon_role(监控用户)权限
    isql -Usa -P -SSYBASE

    1>grant role mon_role to sa

    2>go

  4. 配置相关参数。使用isql登录服务器,执行以下命令

    isql -Usa -P -SSYBASE

    1>sp_configure 'max SQL text monitored',2000

    2>go

    1>sp_configure 'SQL batch capture',1

    2>go

    1>sp_configure 'sql text pipe max messages',30000

    2>go

    1>sp_configure 'sql text pipe active',1

    2>go

    1>sp_configure 'statement statistics active',1

    2>go

    1>sp_configure 'per object statistics active',1

    2>go

    1>sp_configure 'statement pipe max messages',30000

    2>go

    1>sp_configure 'statement pipe active',1

    2>go

    上述参数中'max SQL text monitored'是静态的,配置完后,需要重新启动后才能生效。

监控sql并优化索引

配置好Sybase之后,可以在发现系统执行缓慢的时候监控Sybase服务器中执行的sql,步骤如下:

  1. 开始监控
    1>sp_configure 'enable monitoring',1

    2>go

  2. 在前端浏览器中执行操作缓慢的操作
  3. 在isql窗口中执行
    1>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
    2>go
    查询出来的结果中包含了当前正在执行的sql语句,并按照花费的cpu时间进行排序。
  4. 找到最费时的sql语句之后,通过执行计划查看其有没有使用索引
    1>set showplan on
    2>set noexec on
    3>go
    1>select ......(上一步得到的语句)
    2>go 
    从返回的查询结果中找到没有使用索引,而是执行全表扫描的表,按select语句中的where条件加上索引
  5. 关闭监控。
    1>sp_configure 'enable monitoring',0

    2>go

    由于监控会影响Sybase数据库的性能,因此使用完要及时关闭。

 

  • 无标签