最近在用这样一个语句定期查数据库各个表空间的数量情况,这个语句主要用了表空间的快照函数SNAPSHOT_TBS_CFG(),这里的DB2是UDB V82:
select 'TEST' as "DB", year(snapshot_timestamp)*100+month(snapshot_timestamp) as "年月", snapshot_timestamp, tablespace_id, tablespace_name, page_size, decimal(free_pages,18,2)/decimal(total_pages,18,2) * 100 as FREEPERC, decimal(used_pages*page_size,30,2) / 1024 /1024 USEDMB, total_pages, high_water_mark, usable_pages, used_pages, free_pages from table(snapshot_tbs_cfg('',-1)) a order by tablespace_type, used_pages*page_size desc;
刚好今天对一张数据量大约4GB的表做了清理,做法是整个表DROP了,对比前后两次的快照的USABLE_PAGES,USED_PAGES,FREE_PAGES,详情如下:
执行时间 总可用页数 已用页数 空闲页数
执行删除前 16777184 16084224 692960
执行删除后 16777184 15365008 687632
执行删除前,总可用页数 = 已用页数 + 空闲页数,执行删除后 总可用页数 > 已用页数 + 空闲页数。我重新建立连接执行语句进行查询,情况还是那样。
为什么删除了将近4GB的大表之后,USED_PAGES已经减少了,FREE_PAGES还是没有变化呢?难道快照函数不是实时更新的吗?
select 'TEST' as "DB", year(snapshot_timestamp)*100+month(snapshot_timestamp) as "年月", snapshot_timestamp, tablespace_id, tablespace_name, page_size, decimal(free_pages,18,2)/decimal(total_pages,18,2) * 100 as FREEPERC, decimal(used_pages*page_size,30,2) / 1024 /1024 USEDMB, total_pages, high_water_mark, usable_pages, used_pages, free_pages from table(snapshot_tbs_cfg('',-1)) a order by tablespace_type, used_pages*page_size desc;
刚好今天对一张数据量大约4GB的表做了清理,做法是整个表DROP了,对比前后两次的快照的USABLE_PAGES,USED_PAGES,FREE_PAGES,详情如下:
执行时间 总可用页数 已用页数 空闲页数
执行删除前 16777184 16084224 692960
执行删除后 16777184 15365008 687632
执行删除前,总可用页数 = 已用页数 + 空闲页数,执行删除后 总可用页数 > 已用页数 + 空闲页数。我重新建立连接执行语句进行查询,情况还是那样。
为什么删除了将近4GB的大表之后,USED_PAGES已经减少了,FREE_PAGES还是没有变化呢?难道快照函数不是实时更新的吗?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10990946/viewspace-693971/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10990946/viewspace-693971/