+ -
当前位置:首页 → 问答吧 → Sybase ASE技术点分析系列(1)--数据库页面大小如何选择?

Sybase ASE技术点分析系列(1)--数据库页面大小如何选择?

时间:2009-07-14

来源:互联网

从今天开始,由我来抛砖引玉的提出一些关于Sybase ASE的技术点的讨论,这会是一个系列。

从哪里开始是我一直头痛的问题,想来想去,就从Sybase创建Server的第二项选择开始吧--页面大小。

大家都知道,Sybase ASE从02年发布12.5开始就支持2/4/8/16K页面的选择,但是系统缺省为2K页面。大家在不知道页面大小对于系统影响的情况下,估计不会去选择大页面。因此,我想和大家讨论讨论到底我们应该选择什么样的页面大小,2K or 16K?

在说数据库页面之前,想调查一下大家所知道的或者所维护的系统所采用的页面大小。

[ 本帖最后由 jarjar 于 2009-7-14 10:47 编辑 ]

作者: jarjar   发布时间: 2009-07-14

数据库页面是在Server Config的时候选择的,选择完成后就不能更改,而且所有的数据库都只能使用同样的页面大小来使用。因此在创建Serevr之前,请谨慎的确定数据库页面。

那么,到底应该选择多大的页面合适?不同的页面大小有着怎样的利于蔽?以下信息来自sybase官方工程师:

大页面的好处:
1、允许一条记录存放更多的数据,Sybase ASE的一条记录最多存放在一页之内,因此页面大小直接关系到数据表一条记录的大小。
2、大页面能大幅度提高IO操作效率,能提升操作效率。

蔽端:
1、对存储空间要求更多,对于APL表存在空间浪费的情况。
2、对于页锁的表,潜在可能存在竞争,建议使用行锁。

作者: jarjar   发布时间: 2009-07-15

根据以上说法,我这边确实更改了几个系统的页面大小,由于页面大小不同不能做dump/load,因此更换页面大小只能用bcp。页面从原来的2K-->8K后,效率得到不同程度的提升:
1、对于IO频繁的操作,比如每天的dump database,每周的update statistics和reorg操作时间大大缩短。仅仅只有原来的1/2 - 1/3的时间。
2、对于日常的应用,响应时间也得到提升,对于大查询,时间提升比较多。

从结果来看,选择大页面虽然会带来存储的浪费,但是对于维护及应用的效率得到提升,应该是值得的。

作者: jarjar   发布时间: 2009-07-15

欢迎大家提出不同看法和问题,学习就是在不断的问与答的过程中得到进步。

作者: jarjar   发布时间: 2009-07-15

怎么查询数据库的页面啊?

作者: iaduan   发布时间: 2009-08-13

12.5之前,只有2k页面,用select @@pagesize查询
12.5之后,用select @@maxpagesize查询

作者: jarjar   发布时间: 2009-08-14

大page带来的好处之一就是io的降低,相同的需求可以读取更少的页。
但对于典型的OLTP系统,数据修改非常频繁的情况下,锁会是个比较麻烦的问题,特别对于APL表,对于使用行锁表的说法,首先需要的锁资源会大大增加,另外,行锁还有数据删除后空间的回收问题,需要额外的加定时任务。
大page更适合于OLAP系统。

作者: heyist   发布时间: 2009-09-16

还不是太明白,研究中~~

作者: pegem255   发布时间: 2009-09-22



QUOTE:原帖由 heyist 于 2009-9-16 22:58 发表
大page带来的好处之一就是io的降低,相同的需求可以读取更少的页。
但对于典型的OLTP系统,数据修改非常频繁的情况下,锁会是个比较麻烦的问题,特别对于APL表,对于使用行锁表的说法,首先需要的锁资源会大大增加,另外,行锁还有数据删除后空间的回收问题,需要额外的加定时任务。
大page更适合于OLAP系统。

你所说的是有道理的,对于OLTP的应用,我们修改成8K页面后,整体的性能的确得到提升。我想主要原因还是在于底层IO效率得到提高,对于一个典型OLTP的系统,查询定位的操作可能占整个SQL的60%(查询定位除select外,还包括update/delete语句中的一部分)。因此当IO的效率提升后,对于所有的SQL应该都有效率上的提升。

当然,大页面调整后,对于存储空间会有些浪峰,对于内存等资源的要求可能会更高。这个需要平衡两者之间的关系,在投入多少的情况下,得到多大的效率上的提升。

作者: jarjar   发布时间: 2009-09-23

楼主能不能提供一些准确的数字来给出一些更具体的关于性能提高的认识?

我比较倾向去保持2k的oltp,性能的提高更依赖于定期的维护(defrag, update stats,etc)和应用的设计。

作者: popupmenu   发布时间: 2009-10-08

不同的应用,修改页面后带来的效率上的提升肯定是不同的,我这边应用修改后效率提升30%以上。

作者: jarjar   发布时间: 2009-10-18

有没有相关的文献资料参考?30%是非常不错的提高啊。

作者: popupmenu   发布时间: 2009-10-20

官方没有数据支持。oracle缺省为8k页面,修改数据库页面的确比较麻烦:
1、重建数据库Server,使用8K页面。
2、建数据库
3、导出原来数据库中所有数据库对象的DDL语句,在新数据库上建表、索引、主键、视图、存储过程、触发器等等。
4、bcp out原来的数据,bcp in到新库。或者通过代理库的方式,用select into来完成数据的导入。

作者: jarjar   发布时间: 2010-01-06

关于Sybase ASE的技术点

作者: def3ok2   发布时间: 2010-01-13

还不是太明白,研究中~~

作者: xin2v   发布时间: 2010-01-19