我们之前是使用db2自动收集统计信息,数据量小的时候不存在太大的性能影响。但系统运行了16个月左右,由于数据量大,加之db2决定autorunstats的时间也不好预测并加以控制。所以在前端时间,出现白天业务高峰期的时候对数据量最大的几张表进行进行自动收集统计信息,且持续时间非常...
显示全部我们之前是使用db2自动收集统计信息,数据量小的时候不存在太大的性能影响。但系统运行了16个月左右,由于数据量大,加之db2决定autorunstats的时间也不好预测并加以控制。所以在前端时间,出现白天业务高峰期的时候对数据量最大的几张表进行进行自动收集统计信息,且持续时间非常长!导致全省系统并发性非常低。
所以之后我们采取的策略:
1 业务涉及多的且变动最大的表(这些表每天都涉及到大量的数据插入和更新操作)进行定期手动收集,并限制允许时的资源进行限制。我们是每晚都执行这些表的统计信息收集。
2 对一些数据量大的变动小的表(比如我们业务中的个人信息表基本是1年变动一次,其他时候变动非常小),基本在每年变动大批量变动的时候,在变动的同时就直接做一个统计信息的更新。
3 对一些数据量小并且基本不变动(一般变动都是维护人员操作的变动,业务只涉及到查询的表),更新一次统计信息后就不再管了。
俺说的是我们系统的实际维护情况哈,开始数据量小的时候,我觉得使用db2的自动统计收集还不错。但数据量大了的话对性能还是很有影响的。各位大神觉得我们这方案有什么不足给指点指点哈!
收起