我老婆黑社会
发表于 2007-01-22 15:49
原帖由 psc2001 于 2007-1-22 14:48 发表
有这样的说法么
一般只是不同的pagesize建不同pagesize的bufferpool
一般来说不同的表空间最好用不同的bufferpool。
psc2001
发表于 2007-01-22 15:55
原帖由 我老婆黑社会 于 2007-1-22 15:49 发表
一般来说不同的表空间最好用不同的bufferpool。
有什么依据么
一般对于bufferpool的调整只是大小对于命中率的影响
我老婆黑社会
发表于 2007-01-22 16:11
1、对阵列上的磁盘划分lun
2、创建VG,要保证VG里的hdisk的控制器要错开
3、创建裸设备,命令:
mklv -y lvname -t 'raw' -a e/c-SStripeSize -u num vgname size
其中lvname为裸设备名,-a 后面用c或e,e是在逻辑卷的外部边缘分配逻辑分区,a是在中间扇区分配,存放数据最好用e,索引用c。-S 是做条带化的大小,-u 是指你创建VG是包含的hdisk数目,size是分配的大小,size要能整除-u后的参数。
4、接下来就可以创建bufferpool和tablespace,tablespace是DMS的。所以要把tablespace的空间大小规划好。
建bufferpool的例子:
db2 "create bufferpoolbptest32K immediate size 5000 pagesize 32K"
建tablespace的例子:
db2 "create tablespacetest32Kpagesize 32K managed by database using (DEVICE '/dev/rtest_32k_01m'1G,DEVICE '/dev/rtest_32k_02m' 1G) bufferpool bptest32K"
以上仅供参考,太忙了,一直想把很多东西整理一下,苦于没有时间。
我老婆黑社会
发表于 2007-01-22 16:28
原帖由 psc2001 于 2007-1-22 15:55 发表
有什么依据么
一般对于bufferpool的调整只是大小对于命中率的影响
就是为了保证数据库性能不受影响。bufferpool的大小会影响数据库访问的速度。
缓冲池是指从磁盘中读取表或索引数据页或对它们进行修改时,用于对这些表或索引数据页进行高速缓存的内存。缓冲池通过允许从内存(而不是磁盘)中读取数据,来改善数据库系统的性能。由于内存的存取速度比磁盘的存取速度快得多,因此,数据库管理器需要读写磁盘的次数越少,性能就越好。由于大多数数据处理发生在缓冲池内,因此配置缓冲池是唯一的最为重要的调整环节。只有大对象和长字段数据不在缓冲池中处理。
当一个应用程序第一次存取某个表的某行时,数据库管理器会将包含该行的页放入缓冲池中。下一次任何应用程序请求数据时,数据库管理器会先在缓冲池中查找此数据。如果请求的数据在缓冲池中,则无需存取磁盘即可检索到此数据,因而提高了系统性能。
[ 本帖最后由 我老婆黑社会 于 2007-1-22 16:31 编辑 ]
psc2001
发表于 2007-01-23 09:11
原帖由 我老婆黑社会 于 2007-1-22 16:28 发表
就是为了保证数据库性能不受影响。bufferpool的大小会影响数据库访问的速度。
缓冲池是指从磁盘中读取表或索引数据页或对它们进行修改时,用于对这些表或索引数据页进行高速缓存的内存。缓冲池通过允许从内存 ...
您引用的原话也就说明bufferpool大小对于性能的影响,并没有说明每个TBS都要有独立相对应的bufferpool
beginner-bj
发表于 2007-01-23 09:16
原帖由 我老婆黑社会 于 2007-1-22 15:49 发表
一般来说不同的表空间最好用不同的bufferpool。
说反了。
一般来说不同的表空间最好用相同的bufferpool。当然前提是pagesize一样。
在某些特殊情况下相同pagesize的表空间才最好用不同的bufferpool。
估计有人要问什么是特殊情况了,呵呵
我老婆黑社会
发表于 2007-01-23 09:17
原帖由 psc2001 于 2007-1-23 09:11 发表
您引用的原话也就说明bufferpool大小对于性能的影响,并没有说明每个TBS都要有独立相对应的bufferpool
确实,不是一定要给每个TBS建立对应的bufferpool。
psc2001
发表于 2007-01-23 10:40
原帖由 beginner-bj 于 2007-1-23 09:16 发表
说反了。
一般来说不同的表空间最好用相同的bufferpool。当然前提是pagesize一样。
在某些特殊情况下相同pagesize的表空间才最好用不同的bufferpool。
估计有人要问什么是特殊情况了,呵呵
那就别卖关子了
请您解释下特殊情况吧
huyuhui001
发表于 2007-01-23 11:22
通常的做法是
先根据整个数据结构中哪些是大表,哪些是小表,哪些是经常要反复清空再写入的表,来规划tablespace,建议分开放在不同的tablesapce中,能减少HWM(高水位)的影响。
其次,根据tables的结构,来计算pagesize,这样可以避免tablespace空间的浪费。
对于bufferpool,一般是根据tablespace的pagesize来建立的,匹配的pagesize能提高预读取的性能。
beginner-bj
发表于 2007-01-23 11:50
由于缓冲区的重要性,你应该仔细考虑使用多少个缓冲池来适应你的实施需要;每一个究竟需要多大;以及每个缓冲池怎么样能被充分利用。 在多数环境里,能被有效使用的缓冲区个数取决于可利用的系统内存的大小。 如果可利用的内存可以保留10,000个4k 页(或更少),那么通常的使用单独的大缓冲池比去使用多个小缓冲池要好。 使用多个小缓冲区将导致频繁地访问页来经常与内存进行进出交换,反过来会导致为存储对象比如编目表的I/O竞争或者重复的访问用户表和索引。但是,如果有比较多的内存,应该考虑创兼各自的缓冲区为以下:
· 每一种临时表空间被定义
· 包含着被一些短期的更新事务一直或者重复访问表的表空间
· 包含着表和索引频繁地被更新的表空间
· 包含着表和索引频繁地被查询但很少被更新的表空间
· 包含着表频繁地被使用于随意的查询的表空间
· 包含着很少被应用程序访问的数据的表空间
· 包含着一些你想要使用的数据和索引的表空间。
在许多情况下,大一点的缓冲池要优于较小的缓冲池。但是,考虑到可以使用的内存总额以及缓冲池将怎么被使用。 如果你拥有一个要从一个非常大的表中执行许多随机存取操作的应用,那么你应该为这个特殊表创造和使用一个小缓冲池。 在这种情况下,没有必要在缓冲池内存中保留数据页一旦他们被用于去执行一次单独的查询。 另一方面,如果你拥有一个要从几个看似很小的表中频繁地检索数据的应用,你应该考虑创建一个足够大缓冲池来存放所有在这些表里免得数据。 采用这个设计方案,数据能一次装入内存,并且允许它反复的被获取而没有必要额外的磁盘I/O 。