浅析 Sybase 数据库系统性能调优
性能调优”是对应用程序的性能优化。SYBASE 数据库“性能调优”的主要目的是减少对系统公共资源的争用。
对 sybase 数据库系统的性能进行优化,是一项长期且受诸多因素影响的工作,它可划分为以下 4 个层次:
(1) 服务器层:包括对内存的合理分配,锁操作和临时表的使用,与系统配置关联的磁盘的 I/O 性能。
(2) 数据库层::包括数据库对象的设计,索引的创建!表中数据类型的选择,数据库设备的分配及使用。
(3) 应用层:包括 T_SQL 查询语句的优化,应用级封锁,事务和游标的使用。
(4) 运行环境层:包括硬件、操作系统和网络对总体性能的影响。
在数据库应用系统的管理维护中,运行环境引起的性能劣化只有通过硬件的升级才能得到优化,在系统硬
件配置和网络设计确定的情况下,影响系统性能的主要是数据库层和服务器层。笔者就数据层和服务器层
优化进行总结。
一、数据库表的优化
对于 Sybase11.9 以前的版本,由于数据库管理系统只提供了页级锁和表级锁,因此减少页的竞争将有助
于提高系统的性能.
当大多数更新都发生在同一页上时,该页将成为热点,通过分析性能监测报告,我们可以得到系统的页竞争
情况,例如下述报告表明有 99%的插入发生在堆表的最后一页上,并且正在等待锁:
Last Page Loocks on Heaps
Granted 3.0 0.4 185 88.1%
Waited 4.0 0.0 25 11.9%
解决上述问题的方法有两种:一种是将表分区,表分区后可产生多个页链,这样就有多个“最后一页”来满足插
入要求,从而减少并发插入时的相互等待;另一种是采用非簇类索引,将更新分布于表中不同的数据页上,
但该方法会增加数据物理顺序的开销。
对于一些竞争非常激烈且记录条数较少的表,我们可以通过减少数据页或索引页上行的数量来进行优化,
即将一条记录分布在一页上, 这样各进程需要的页都不相同,从而可以大大减少数据页的竞争。
在建表时 Sybase 提供了 fillfactor 和 max_roms_per_page 两个参数,分别用来改变索引页和数据页
的填充程度。
在定义数据库表时,字段的数据类型选择是否合理对数据库的性能和操作有很大影响,
(1)Identify 字段不要作为表的主键与其它表关联,这将会影响该表的数据迁移。
(2)TEXT 与 IMACE 字段常用来存放二进制对象,这类数据的操作相比其它数据类型较慢,因此要避免
使用。
建立一个好的索引对优化数据库的查询性能是非常重要的。要设计一个合理,索引关键就在于创建什么字
段作为索引以及创建哪种类型的索引,这是因为定义哪个字段作为索引,涉及到执行一次详细的查询分析
需检查其查找子句中哪些字段引用以及索引的有用性,并把这些查询按重要性排队。由于 SQL SERVER
一般在每张表上只选一个索引来满足查询,因此索引中的第一个元素最好是惟一性最好的。
群集索引通常用于主键标,因为主键标一般是一张表的主访问路径。不过,在下列情况下也可采用群集索
引。
范围查找,含有大量重复值的字段;
ORDER BY 中常引用的字段;
连接子句中引用的不是主键标的字段;
非常频繁地被访问的字段。
非群集索引一般用于以下情况:
单行查找;
连接运算以及在选择性很高的字段上的查询。
带有小范围检索的查询。