车站计算机Sybase数据库的优化

车站计算机Sybase数据库的优化

广州地铁运营二中心林建明

目前,广州地铁四号线全线SC服务器已使用了Sybase15.5版本的数据库。在获取License后,该版本的性能较之前的Sybase12.5版本有很大的提高,例如可配备2个CPU;设置多个tempdb组等等。但在安装使用Sybase数据库的初期,查询设备状态或报表时经常出现超时,或有报表数据错误等情况,影响车站的日常运营。

问题分析

四号线目前的SC服务器为IBMX365,其配置如表1。

表1

从硬件性能上看,IBMX365的配置完全可以正常运行Sybase数据库软件。系统方面,在安装新的Sybase数据库前,已重新安装了WindowsServer2003SP2,可排除系统参数错误等的原因,并已安装了包括:

MicrosoftVisualC++2005ServicePack1RedistributablePackageandKB973544

MicrosoftVisualStudio2005ServicePack1andKB971090

两个程序更新包,确保了在系统上的支持。

因此,在不改变Sybase15.5版本数据库的情况下,通过对Sybase数据库进行优化,是解决这些问题的有效的措施。而对Sybase数据库的优化,一般可以从内存、缓存、tempdb等方面来进行。

数据库优化

1、数据库表内存空间

1)maxmemory用于建立可分配给AdaptiveServer的内存量的最大设置。将maxmemory的值设置为稍大于所需内存量的值,这样当AdaptiveServer的内存需求增加时,就可利用这些附加的内存。而设置maxmemory容量可遵循这样的规则:

设置内存=物理内存-操作系统占用-其他应用程序占用-备份服务占用。

一般来讲,设置的内存容量约为物理内存的60%。

这是初期安装数据库内存配置语句:

sp_configure‘maxmemory’,256000

可以看到,配置的’maxmemory’为256000(以2K为单位,即500M),约为SC服务器物理内存的24.4%,与理论上的60%相差较多。所以,对Sybase数据库的优化,可以提高最大内存容量到1.2G(2G*60%)左右:

sp_configure‘maxmemory’,629145

2、数据缓存优化

数据高速缓存包含当前使用的数据、索引和日志页,以及AdaptiveServer最近使用的页。应该加大数据的高速缓存,减少过程高速缓存。在很多资料中显示,经过长期的测试及调试,数据库缓存使用最有效的配置是:数据高速缓存约占缓存总量的90%左右,而过程高速缓存约占10%。

这是初期安装未进行优化的配置语句:

sp_cacheconfig‘defaultdatacache’,’250M’

sp_configure‘procedurecachesize’,30720

初期的缓存配置中,缓存总量较少,而且数据高速缓存为250M,过程高速缓存为60M,比例约为4:1,与理论的9:1也有差距,故可以增加缓存容量,例如配置的缓存为500M,然后进行以下配置:

sp_cacheconfig‘defaultdatacache’,’450M’

sp_configure’procedurecachesize’,25600

或者利用以下语句进行配置:

sp_configure’procedurecachepercent’,10

3、最大打开对象优化

数据库的对象包括表、索引、视图、图表等,设置最大打开对象可以控制数据库的访问资源的利用。原配置值为1000,在数据缓存配置增大的前提下,可以对其进行提升,如:

sp_configure‘object’,5000

4、tempdb的优化

tempdb是活动最为频繁的数据库,常常被用来排序、创建临时表、重格式化等操作,所以tempdb的优化应该受到特别的关注。

1)调整临时库的位置

tempdb数据库缺省放在master设备上,将临时数据库发在分离的设备上是更可取的。首先,初始化一个用来存放临时数据库的设备,然后将临时数据库扩展到该一个设备上。

2)将临时数据库与高速缓冲进行绑定

由于临时表的创建、使用,临时数据库会频繁地使用数据缓存,所以应为临时数据库创建高速缓存,从而可以使其常驻内存并有助于分散I/O:

首先,创建命名高速缓存:

sp_cacheconfig‘tempdb_cache’,’200M’,’mixed’

重新启动server,然后捆绑临时数据库到tempdb_cache高速缓存:

sp_bindcache‘tempdb_cache’,tempdb

若有大的I/O,配置内存池。

5、最大索引配置及优化

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。配置合理的最大索引,可以有效利用固有资源,同时也可以提高查询的速度。原配置中,索引的最大值为1000,在内存缓存等方面提升后,也可以提升索引的最大值:

sp_configure‘indexes’,5000

同时,对访问较多的列表,可对其创建索引,以提升其查询的速度。

目前设备情况

目前,已对四号线全线的Sybase数据库进行了优化:

1、sp_configure‘maxmemory’,600000

2、sp_cacheconfig‘defaultdatacache’,’500M’

3、sp_configure‘procedurecachesize’,25000

4、sp_configure‘object’,4000

5、sp_configure‘indexes’,5000

6、sp_cacheconfig‘tempdb_cache’,’200M’,’mixed’

7、sp_bindcache‘tempdb_cache’,tempdb

并且,从使用情况来看,数据库表txn54purse,txn53entry数据量较大,需要对查询条件中的列创建索引:

--DROPINDEXTXN53ENTRY.IDX_TXN53ENTRY

将索引绑到tempdb_cache,并为其他库表创建索引,加速报表生成。图1。

图1将索引绑到tempdb_cache

除以上优化外,同时也使用处理更快的语句对Sybase数据库的存储过程作了优化,使存储数据更加快速、更加准确。经过优化后的Sybase数据库使用正常,在日常查询设备数据时消除了超时的现象,而且报表的准确性也更高。

标签:;  ;  ;  

车站计算机Sybase数据库的优化
下载Doc文档

猜你喜欢