IBMER_JAY
作者IBMER_JAY·2012-01-06 14:25
数据库管理员·IBM

一些总结

字数 1353阅读 816评论 0赞 0
1,日本客户现场,(双机热备HA环境)主机故障之后切换到备机,某个tablespace不能用的情况
原因:用户在主机环境建了个raw设备container的tablespace,但是没能及时同步HA,导致在主机故障切换到备机的时候,备机找不到该DISK,自动切换到offline的状态
解决:同步HA,其实就是共享该DISK,对备机也可见(alter tablespace swtich online)
2.日本客户不想用DMS表空间,觉得SMS表空间够用,并且根据需求分配大小,管理方便,不需要人工干涉
解释:数据量不大,小表多的情况小,确实DMS在I/O和空间管理效率上面的优势不明显,但如果数据量大(百万条),大表多,或者是DSS决策系统,OLAP上DMS在性能上优势还是很明显的。归根结底,SMS上面所谓的分配只不过是在inode解答上面增加一个指向页的偏移,这个指向可能在物理盘上面可能不是连续的,可能被存储在不同的地方,ange prefetch是不可用的,但DMS是数据库直接和磁盘打交道,可以保证在物理磁盘上面的连续性。V9新增加了自动存储,管理上面也方便。另外SMS表表空间是不支持把索引,数据分开的
3.客户认为pagesize越大存储的行数越多
解释:其实不然,pagesize,觉得extent一次写入多少页,并不是控制你的行数,而是控制一行的长度,真正控制行数的是RID,这个是通过选择表空间的regular,large来决定
4,系统临时表空间最好创建比用户表空间大一页的(比如用户表空间4K,临时表空间最好是8k)。因为join表之后会增加临时表的pagasize,增大size可以防止指针跳转
5,根据snapshot里面的,log pages read和log pages write的比值越小越好,
log pages read要接近0说明 未提交的事务日志要回滚的话,可以直接在缓冲中读到日志,不需要去读物理页。当log pages read很大的时候,要适当增加logbufsize。

6,OLTP和OLAP混合系统,出报表的SQL需要用with ur,否则可能会出现锁超时的情况。
也可以设置
DB2_CAPTURE_LOCKTIMEOUT=ON
提前计算谓词,可以避免全表扫描

DB2_SKIPINSERTED=ON
忽略掉未提交的insert

DB2_SKIPDELETED=ON
不建议设置该注册变量,相当于脏读

7.V9后可以通过alter tablespace去掉系统的缓存,避免数据被缓存2次。但日志文件还是会用到aix的nocomp内存。
在做ETL的时候,事务多,日志吞吐大,造成系统内存吃紧,未了避免日志文件使用系统的内存
1,日志系统的FS 设置成DIO
mount -o dio /dev/dstdb_actlog
2,设置DB2注册变量
DB2_LOGGER_NON_BUFFERED_IO=on
(保证logbuf要尽量大点)

8,

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广