大白菜00 发表于 2012-06-18 12:55

小型机P550上跑SYBASE CPU 100%巨慢,各位分析一下

附件是SYSMON,请各位帮忙分析分析,谢谢。


2BeSybPro 发表于 2012-06-19 08:13

从sp_sysmon看不出什么问题, 可以加大ULC and "session tempdb log cache size"。最好设置 (enable) MDA,很容易就可以找出相应的procedure/queries。

应该是high CPU usage通病之一:table scan on big tables,尤其是使用/dev/rsyb_yth034 (zs_temp_data01),/dev/rsyb_yth200 (zs_data_193) 和/dev/rsyb_yth002 (zs_log_002)的库,看起来是从一个库(表)插入到另一个库(表)中,但相关语句有表扫描。
Transaction Detail            per sec      per xact       count% of total
---------------------------------------------------------------------
    Inserts
      APL Heap Table               6588.6          27.4      415083      34.6 %
      Data Only Lock Table      12440.4          51.7      783743      65.4 %
---------------------------------------------------------------------
    Total Rows Inserted         19029.0          79.2   1198826      67.9 %

如果没有设置MDA,可以找出消耗CPU最多的users,然后再找出相应的procedures/queries from sysprocesses。

1. sp_clearstats/go
2.
declare @cputot float, @iotot float
begin transaction
select @cputot = sum(convert(float, totcpu)), @iotot = sum(convert(float, totio))
        from master.dbo.syslogins holdlock

if @cputot = 0
   select @cputot = 1

if @iotot = 0
       select @iotot = 1
select top 15 "Name" = name, "Since" = convert(char(11), accdate),
             "CPU" = totcpu, "Percent CPU" = convert(varchar(9), convert(numeric(14,4),round(convert(numeric(20,4),totcpu)/ @cputot * 100, 5) ) ) + "%",
               "I/O" = totio, "Percent I/O" = convert(varchar(9), convert(numeric(14,4),round(convert(numeric(20,4), totio) / @iotot * 100, 5) ) ) + "%"
    from master.dbo.syslogins
   order by 3 desc
print ""
select "Total CPU" = convert(varchar(15),@cputot), "Total I/O" = convert(varchar(15),@iotot)
commit transaction
go
3. dump tran master with truncate_only/go (please ensure truncate log in master after you run sp_clearstats)

   

hansion3406 发表于 2012-10-16 22:06

谢谢您,顶

clife7801 发表于 2012-10-25 07:17

顶一下。发现sybase的索引机制好像并不太好。我的是11.5
页: [1]
查看完整版本: 小型机P550上跑SYBASE CPU 100%巨慢,各位分析一下