周一早上某业务系统负责人找了过来,
——"我们的一个表空间在这个周末使用量增加了一倍!马上要满了,快帮我们看看!"
——"你们周末做什么操作了?导入数据了?"
——"是在 insert 一批新数据,但数据量不大,而且 insert 失败然后 rollback 了"
——"看看……"
登录数据库服务器以及应用服务器一番查看,表里的行数确实没什么变化,但表空间的 Used pages 却是翻了一倍;应用程序如他所述,批量 insert 1 万行数据,由于其中一行主键重复导致 insert 失败然后 rollback,但却重试了 2000 多次……
看到这儿已经基本上有了初步的结论,这 2000 多次的 insert / rollback 导致 DB2 从表空间里持续的为这个表分配了新的空间(extent),尽管最终没有新的数据插入,但这个过程中 DB2 分配了的空间并没有还给表空间,也就是说这些增长的 Used pages 应该都是空闲的数据页。
——"不对啊,这些 insert / rollback 是串行做的,应该每次 rollback 之后释放出来的 page 可以被下次的 insert 重新利用,而且大小正合适!"
—— "就喜欢你这个较真的风格!我们详细展开说说,事情是这样的……"
https://www.ibm.com/developerworks/cn/data/library/dm-cn-db2insert-table-space/index.html
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞3
添加新评论1 条评论
2017-04-14 17:58