sybase性能调优

问题:SYBASE数据库运行一段时间后,系统运行很慢?

可以isql登录ASE 执行
select @@version
go
查看数据库版本。

如果你使用的是ASE12.0,建议使用ASE12.5以上版本,因为自从sybase在数据库市场被ORACLE反超后,sybase推新产品的速度非常快,ASE12.5算是比较可靠的产品。

在使用上,ASE12.5也比较方便,尤其对高速内存的配置可以动态实现,不需要重新启动数据库。这对企业级用户来说比较有利。

ASE对资源的使用设计的比较精简,浪费的资源很少。在安装完ASE后其中的所有参数default 是比较低的,不能满足企业级用户的需要,做做demo还行。

第一步,你必须要根据数据量和用户数,还有应用的特点对ASE的参数做出合理的调整。

通常的做法是:
max memory = physical memory * 70-80%
default data cache = max memory * 50%
procedure cache size = max memory * 20-30%

number of user connections = n (default = 25)
number of lock = n * 单个用户所需的最大锁数 * 120%
(一般这个比较难估计,syabse的资深工程师给我的参考值:有用户配到180万,对于你的10G的数据量我估计先配 100000)
number of open objects = 10000
number of open indexed = 10000

这样的配置基本能正常使用了,具体怎么配置可以到sybase官方网站下载手册,英文好的看洋文,也有中文的。

然后,如果发现性能不如你预期的好,就需要发挥你的DBA才能来调优了。对于调优,我也没有独门秘笈,这里需要运用的知识较多,这次就不细说了。
ASE提供有一些工具可以帮助你找到影响性能的瓶颈:
用法很简单:
sp_sysmon "00:03:00"
这会显示3分钟内所有的计数信息,有四大类 18 项。
其中第一项'kernel'信息,显示这段时间内cpu的使用率,io的繁忙度。这很有帮助。

我再费点口舌:以后sp_configure的输出信息不需要发出来了,没什么大用。给sp_sysmon信息就行了。

提醒一下:对数据库的大小安排,tempdb大小,log的大小分配都可以通过利用并行io提高ASE性能。
给的通常的公式:
数据库大小=DB
tempdb = DB * 20% (经验值)
log size = DB * 20%



sp_sysmon详解
本篇文章采摘自时代朝阳数据库(原晓通数据库)培训部 Sybase 技术资料库。

本篇文章描述了通过sp_sysmon对Adaptive Server系统运行情况有一个全面系统了解,有利于更好地熟悉系统性能,更为有效地进行系统管理,合理地利用和配置系统资源,达到系统性能调优的目的。

sp_sysmon可以从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”,性能模块名。

通过sp_sysmon,可了`解当前系统在各方面的系统运行状况,性能出现什么问题和不平衡不协调之处,学会使用相应的参数和措施进行解决和调优,不断比较对照调整前后的性能状况,最终改善系统性能。

说明: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”,kernal

    结果:
    Kernel Utilization      (内核利用)

    ------------------

      Engine Busy Utilization

    Engine 0                        1.8 %

        引擎繁忙程度应在80%-90%之间,如果长期在90%以上,应考虑增加引擎数来改善性能。因为此时内部管理进程无法向磁盘写入,则检查点需要将许多页写回磁盘,而检查点进程很可能将CPU的利用率提高到100%,导致响应时间明显增加。

      CPU Yields by Engine            per sec      per xact       count  % of total

      -------------------------  ------------  ------------  ----------  ----------

    Engine 0                          6.6           0.6        3949     100.0 %

      引擎放弃CPU次数:% of total=1个引擎放弃次数/所有引擎放弃次数,如果显示引擎利用率较低,可通过放弃数判断是否真实反映引擎的停止情况。增加“runnable process search count”(引擎放弃CPU给OS之前一个引擎循环查找可执行任务的次数)参数可增加CPU的驻留时间,而如果想减少引擎在空闲时检查I/O的时间,可减少该参数的值。

      Network Checks

    Total Network I/O Checks          0.0           0.0           0       n/a  

    引擎发送或接收网络包的次数。引擎空闲时频繁检查网络包,如果该值很低而“CPU Yields by Engine”的值高,表明引擎可能被频繁放弃。

    可能包括阻塞和非阻塞两种检查方式。非阻塞方式不管有无I/O等待都对网络进行I/O检查。如果引擎已被放弃并正执行阻塞网络检查,则在网络包到达以后仍保持一段睡眠时间(潜伏期)。此时增加“runnable process search count”(缺省2000)参数可减少潜伏期,保持引擎有较长的循环检查时间,而不是过早被放弃。

      Disk I/O Checks磁盘I/O检查情况:

        Total Disk I/O Checks           693.2          58.8      415939       n/a  

    Checks Returning I/O            469.9          39.9      281921      67.8 %

    引擎对I/O情况的有效检查(I/O完成次数),如过高或过低,用“i/o polling process count”(Server的调度程序在检查磁盘I/O或网络I/O之前可执行的最大进程数)参数增加或减少检查频率。通常说增加该值可增加有大量磁盘或网络I/O的应用的吞吐量,反之,减少该值有可改善其响应时间。

    Avg Disk I/Os Returned            n/a           n/a     0.03020       n/a  
     增加引擎在检查期间的等待时间可改善吞吐量,因为减少引擎检查I/O时间相应增加执行进程的时间。

posted on 2011-03-26 14:40  J-Pei  阅读(1118)  评论(0编辑  收藏  举报

导航