互联网服务 数据库insertdetail

db2 list tablespaces show detail 与pending free page

db2 v9.5 + 双机16逻辑节点。直接drop表之后数据库每个节点出现了大概6个G左右的pending free pages,而且free pages不足一个G,几分钟后报错:"insert的时候不能分配新页"。想利用db2 list tablespaces show detail命令释放挂起的空闲页。但是命令执行成功,pending free pag... 显示全部
db2 v9.5 + 双机16逻辑节点。

直接drop表之后数据库每个节点出现了大概6个G左右的pending free pages,而且free pages不足一个G,几分钟后报错:"insert的时候不能分配新页"。

想利用db2 list tablespaces show detail命令释放挂起的空闲页。但是命令执行成功,pending free pages却无法消除(在单个节点上node0上执行的,但这个节点的暂挂空闲页页没有消除),这是为嘛呢?

select * from sysibmadm.snaptbsp_part where .... 收起
参与13

查看其它 10 个回答stephensun123 的回答

stephensun123 stephensun123 软件开发工程师 SAP China
SMP -> Tablespace Level
EMP -> "Storage Object" Level
两个表空间的SMP的更新本身不会互相影响

但注意理解
wangzhonnew 在帖子
http://www.itpub.net/viewthread. ... p%3Bfilter%3Ddigest
中给出的解释中加粗的部分
“当一个表被drop的时候,需要修改SMP的pageCommitLSN。而将被free的extents会被保存在一个bitmap中。但是当多个application同时drop同一个tablespace里面的不同表的时候,如果同一个SMP page被影响到,那么这个pageCommitLSN只会保存最新的那条LSN。
那么也就是说,如果前面的一些drop table有的被commit,有的没有被commit,如果db2无法区分哪些extent是被commit哪些是没有被commit的。也就是说,如果在这期间那些没有被commit的drop table需要rollback,db2必须保证这些extents没有被别的app使用到。所以,只有当所有影响到该SMP的应用被commit,同时没有比pageCommitLSN更早的未被提交的transaction(因为SMP只保存pageCommitLSN,也就是说db2并不知道都有什么transaction改变了这个SMP page,甚至不知道是否有多过一个transaction改变了这个page),DB2才会真正地把存在在那个bitmap中的所有extents free掉”
互联网服务 · 2010-12-29
浏览3258

回答者

stephensun123
软件开发工程师 SAP China
擅长领域: 数据库
评论340

stephensun123 最近回答过的问题

回答状态

  • 发布时间:2010-12-29
  • 关注会员:2 人
  • 回答浏览:3258
  • X社区推广