Sybase使用经验小结--性能优化基本策略

本文针对数据量大和业务复杂的系统,总结了Sybase数据库的性能优化策略,包括内存、CPU、连接数、锁机制、I/O及设备调整等方面。
 对于数据量较大和业务功能较复杂的系统,Sybase的默认参数根本无法满足需要,必须进行优化。系统数据库方面的优化从两方面进行,一个是调整数据库系统的一些性能参数的值,另一个是应用程序的调优。应用程序的调优调整hsql和sql的写法,配合sql合理的建索引,这里主要对Sybase系统一些基本的性能参数的调优进行一个小结。

1、内存
   内存是对性能影响最大,也是最需要也是最难调优的地方。内存调优一定要,常用的需要调整的参数有:

sp_configure “max memory”,0,”2600M” (设置为共享内存的75%,重启生效)
sp_configure “allocate max shared mem”,1 (启动的时候自动分配max memory指定的最大内存)
sp_cacheconfig “default data cache”,”1300m”(设置数据缓存为max memory的一半)
sp_cacheconfig “default data cache”,”cache_partition=2″
sp_configure “procedure cache size”,102400 (过程高速缓存,通常是max mem20%-30%,这里是200M,在大量的执行sql的时候这个参数一定要调大)
sp_cacheconfig ‘tempdb_cache’,'100m’,'mixed’ (创建一个100M命名高速缓存tempdb_cache给temdpb使用)
sp_bindcache ‘tempdb_cache’,tempdb (将tempdb_cache绑定到tempdb)

   实际中遇到一个很头痛的问题, 32位Windows版本的Sybase 最大内存只能到搞到3G左右,"default data cache"的值超过 1500M Sybase实例就起不来了,导致服务器的16G内存形同虚设,所以如果大家的项目和我这个类似,服务器和操作系统由客户提供,还换不了的,内存不妨要求个4G就够了,多了也浪费。

2、CPU
   当服务器的CPU个数多于一个时,可以考虑多CPU。实际上对于OS会自动调度,设一下只不过是控制的更精确一点。实际需要根据CPU数来修改,若CPU=N,一般设置为N-1。设置这个参数,比如我的服务器8个CPU, 就像下面这样设置:

sp_configure “max online engines”,7
sp_configure “number of engines at startup”,7
sp_configure “max parallel degree”,1 (并行的度,大于或等于1)
sp_configure “number of worker processes”,7 (并行度*并发连接数*1.5倍)

3、连接数(这个没什么说的,数量管够就可以,默认数为25,可根据应用需要来修改。)
sp_configure “number of user connections”,600

查询数据库死进程
select * from master..syslogshold

4、锁
   数据库的锁机制其实是一个比较复杂的话题,这里只能简单说一下。Sybase数据库系统两个级别的锁机制:所有页锁、数据页锁。所有页锁在当数据库加锁时,既锁数据页,也锁索引页;数据页锁当数据库加锁时,只锁数据页,不锁索引页。
   Sybase支持三种类型的锁: 数据表锁、数据页锁、数据行锁。 一些常用的调优命令和策略如下:

sp_configure "number of locks",50000 (设置锁的数量)
    系统设置时要把锁的数量设大一点,简单说就是要管够;如果需要节省空间,减少维护量,使用所有页锁机制;而如果需要加快速度,空间足够,使用数据页锁机制。

   sp_sysmon “00:10:00”,locks (检测表的使用情况)
   当通过监测发现锁竞争超过15%时,首先修改加锁最重的表的锁机制,然后再把数据页锁设置为数据行锁。如果发现螺旋锁多,则为该表建立单独的命名缓存并对命名缓存进行分区。

5、I/O
   数据库调优总的思路是尽量减少和分散物理I/O,尽量减少网络I/O。

   减少物理I/O的办法有: 在命名缓存中增加大块的I/O缓冲池,把数据分散到多个硬盘上,采用RAID技术,建立段,使一个表跨越多个硬盘等等,基本和其他的数据库软件调优一样。
   减少网络I/O的办法是采用大数据包。
sp_configure "default network packet size",2048 设置网络传送包的大小(需要重启动)
sp_configure "max network packet size",2048

6、设备调整
   主要调整两块: 一个是业务数据库的数据设备与日志设备必须分开,添加临时数据库设备;另一个是调整Tempdb,这一条很重要却很容易被大家忽视。
   Tempdb是sybase数据库当中的临时库,用于存放中间结果和临时表。由于使用很频繁而默认大小又很小,我们需要加大其设备空间和库的大小,尽可能把tempdb放置到最快的硬盘上,并建立单独的命名缓存。
sp_cacheconfig ‘tempdb_cache’,'200m’,'mixed’ (创建一个200M命名高速缓存tempdb_cache给temdpb使用)
sp_bindcache ‘tempdb_cache’,tempdb (将tempdb_cache绑定到tempdb)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值