db2批量脚本优化笔记

db2批量脚本优化笔记

最近公司举行了一次db2批量脚本优化经验分享,主要有以下收获:

1.insert, update 的时候,对需要处理的集合进行排序(按索引建排序),可以降低查询索引页而消耗的磁盘IO。
另外,对数据表进行reorge,使物流数据页有序,也可以降低磁盘IO,从而提升批次性能。因为db2在访问有序的数据
时,会进行prefetch,将数据放进buffer pool,实现异步io,从而提高性能

2.同步IO:指buffer pool 中没有对应数据页,需要从硬盘读取
   异步IO:从硬盘中预先将多个页放到buffer pool,从buffer pool 中读取数据。 DB2 通过prefetch 实现异步IO

3.prefetch分类: sequentail prefetch : 执行计划是全表扫描,就会触发sequentail prefetch。
                          dynamic prefetch :DB2会动态监测IO情况,一旦读取的页是顺序的,就会触发后续的页产生prefetch
                          list prefetch: 当索引的clusterratio比较低时,先对索引的rid进行排序,再通过sequentail或者skip-sequentail的方式进行prefetch

4.当物流数据太乱时,即命中率不高,可以考虑reorge表

5.索引表空间和数据表空间应该分开。以降低单个数据文件的io

6.反范式数据冗余,派生列,用空间换时间。

7.数据量大的表可以考虑按某个维度分表。

8.组合索引创建时,将=,in后的字段放在前面,范围谓语(如between)的字段放在后面

9.大数据量导入、更新时,考虑分批commit。

10.索引更新时,注意更新统计信息,以得到预期的执行计划。runstats 是用来更新统计信息的。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值