db2 reorg到底需要多少表空间(转)
脱机reorg需要一定的空间,这个空间与目标所在的数据表空间、索引表空间、以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关。
(1)对表执行reorg操作如:db2 reorg table tabschema.tabname,可以理解成四个步骤:
1、排序
2、构建
3、替换
4、重建索引
当执行第1,2,3步时,使用目标表所在的数据表空间,将在数据表空间中建立目标表的影子副本。
此时,数据表空间会增长,增长量为目标表实际大小:Npages*表空间页大小。
Npages:表示目标表有效数据页,Npages可通过如下方式获得,但未必精确,最好先收集一下统计信息(runstats)。
db2 "select substr(tabname,1,20),Npages,Fpages,card from syscat.tables"
1,2,3结束后,数据表空间碎片整理完成,空间回收。
当执行第4步时,使用系统临时表空间,有几个索引顺序重建几次。
此时,系统临时表空间会增长,增长量为单个索引占用的大小,约为:nleaf*索引表空间页大小。
nleaf:表示有效索引页,nleaf可通过如下方式获得,但未必精确,最好先收集一下统计信息(runstats)。
db2 "select substr(tabname,1,20),substr(indname,1,18),nleaf,indcard from syscat.indexes"
4结束后,reorg table完成。
(2)对索引执行reorg操作如:db2 reorg indexes all for table tabschema.tabname
一般一张表有多个索引,将对多个索引一个一个地依次进行reorg操作,最后统一替换。
表空间使用情况:
系统临时表空间会增长,增长量为单个索引占用的大小,约为:nleaf*索引表空间页大小。
索引表空间会增长,增长量为一张表中所有索引占用的大小。
例如对一张表的3个索引进行reorg操作,可以看到如下现象:
索引表空间立即降到一个值:A,
系统临时表空间增长,增长"nleaf*索引表空间页大小"后下降至初始大小,同时索引表空间增长"nleaf*索引表空间页大小",
系统临时表空间又增长,增长"nleaf*索引表空间页大小"后又下降至初始大小,同时索引表空间在第一次增长的基础上又增长"nleaf*索引表空间页大小",
系统临时表空间再增长,增长"nleaf*索引表空间页大小"后再下降至初始大小,同时索引表空间再前两次增长的基础上再增长"nleaf*索引表空间页大小",
最后,索引表空间直接降到一个值:A,系统临时表空间回收。
(3)对表执行reorg操作如:db2 reorg table tabschema.tabname use tempspace1
对表和索引均进行reorg操作
均在系统临时表空间中进行
先对数据页reorg,再对索引页reorg
数据页reorg需要的系统临时表空间为:Npages*表空间页大小
一般一张表有多个索引,索引reorg将一个一个依次顺序进行,单个索引的索引页reorg需要的系统临时表空间为:nleaf*索引表空间页大小
(4)在线对表做reorg时,表空间使用非常少。
一般为表空间的extent size(一般为32k),多个并发的话,就要多个extent size。 知道reorg怎样使用表空间之后,我们在做reorg时就要注意各个空间是否预留足够,预留多少算足够呢?
可以按一下方法推算:
(1)离线不指定临时表空间reorg table(目前常用的)
数据表空间预留最大Npages的量,最大的Npages*表空间页大小,最大的表对应的Npages可通过以下sql获得
db2 "select substr(tabname,1,20),Npages,Fpages,card from syscat.tables order by Npages desc fetch first 10 rows only"
临时表空间预留最大nleaf的量,最大的nleaf*表空间页大小,最大的索引对应的nleaf可通过以下sql获得
db2 "select substr(tabname,1,20),substr(indname,1,18),nleaf,indcard from syscat.indexes order by nleaf desc fetch first 10 rows only"
(2)reorg indexes all
索引表空间预留单个表中含有的所有nleaf的量
db2 "select substr(tabname,1,20),substr(indname,1,18),nleaf,indcard from syscat.indexes where tabname=''"
临时表空间预留最大nleaf的量
(3)离线指定临时表空间reorg table use tempspace
临时表空间预留最大Npages的量和最大nleaf的量
以上是一个时间点只对一张表进行reorg,但同一时间多张表并行reorg时,就要算多个表的空间了。 建议,
所有的数据表空间和索引表空间的使用量控制在50%以下,这样就不用担心数据和索引的表空间溢出了。
对于临时表空间,建议至少有最大nleaf的量。
db2 reorg到底需要多少表空间(转)的更多相关文章
- DB2支持的三种表空间SMS、DMS、DMS的自动存储
DB2支持的三种表空间SMS.DMS.DMS的自动存储 DB2中,表空间是数据库与这个数据库中存储的表之间的逻辑层.表空间在数据库中创建,表在表空间中创建.容器是一个物理存储设备.它可以由目录名.设备 ...
- db2实例、数据库、表空间
创建数据数据库之前必须创建实例,数据库是运行在实例之上的.实例在本质上是由一些后台进程和共享内存组成.实例相当于是数据库的一个容器,可以包含多个数据库,但是一个数据库只能由一个实例进行管理.相当于Wi ...
- 【DB2】表空间相关详细说明
-.创建表空间 1.创建用户表空间 声明:在指定表空间创建路径的时候,需要指定空文件夹,非空文件夹会导致创建报错!!!如果文件夹不存在,那么在创建表空间的时候会自动创建文件夹! 1.1 创建SMS表空 ...
- db2表空间及日志文件调整
1.SQLState '57011' and errorCode '-964' 原因:数据库的日志文件已满 解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数 ...
- DB2表空间
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0902yuancg/ 临时表空间的使用 (sorts or jo ...
- DB2 表空间和缓冲池
简介 对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑.在本文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池.表空间和缓冲池的设计 ...
- DB2缓冲池、表空间
在DB2中建立表空间得指向该表空间所属缓冲池,否则表空间指向默认缓冲池 1.缓冲池 1.1 创建缓冲池 语法:CREATE BUFFERPOOL <bp_name> SIZE <nu ...
- DB2因表空间不够产生load表失败
今天下午恢复表的时候发现出现错误: SQL3520W Load Consistency Point was successful. SQL3110N The utility has complet ...
- 解决DB2事物日志满、扩充表字段长度和表空间的命令
解决DB2事物日志满.扩充表字段长度和表空间的命令 转:http://blog.sina.com.cn/s/blog_4c0137d10100bb5r.html 一.通常我们在使用db2导入数据或进行 ...
随机推荐
- PHP 通过带SSL的SMTP 发送邮件的处理
客户端与SMTP服务器的通讯, 是通过固定的命令以及返回编号完成的. 发送Email, 需要经过的步骤有创建socket (区分带ssl, 还是不带ssl)执行命令, 并检查返回值是否与预期一致, 不 ...
- Ubuntu中保存iptables防火墙规则
Ubuntu中保存iptables防火墙规则的例子 打开防火墙 ufw disableufw statusufw enable ufw allow 22/tcp ufw reload iptables ...
- Eureka微服务ID
Instance ID用于唯一标识注册到Eureka Server上的微服务实例.我们可在Eureka Server的首页直观地看到各个微服务的Instance ID.例如,图11-1中的itmuch ...
- [原创]茗洋AaronYang的 jquery.myselect.js 我的一次前端突破[上]
[评论,楼层数为30的倍数的,我送你我自己的博客园的皮肤,该博客参与活动] 介绍 myselect 自己原创的js插件 这是一个可以可以支持ie6+的所有浏览器的,适应很多场景和需求的一个下拉 ...
- MySQL 清除从库同步信息
实际的业务生产系统中,mysql从库有时候会根据实际需求变更为主库,这时候我们需要清除掉从库配置的主从信息登录从库执行以下命令:mysql> stop slave;mysql> reset ...
- java多线程状态
造成线程进入阻塞状态的情况大致可分为: 1.调用sleep()方法 2.调用阻塞式IO方法 3. 4.等待通知 5.调用suspend(),程序挂起.
- zabbix server is not running,the information dispalyed may not be current
查看zabbix服务器和客户端的端口及进程都是正常启动,打印的日志也没什么异常,但是就是在主页提示zabbix server is not running 不防尝试改一下zabbix_server的配 ...
- Egret里用矢量挖圆形的洞
项目里需要用到,但是不是用在新手引导上,下面的代码可以绘制一个圆的四分之一,用四个即可拼出一个圆. private createShape(): egret.Shape { let magicNum ...
- centos7环境安装rabbitMQ
使用专业的消息队列产品rabbitmq之centos7环境安装 http://www.cnblogs.com/huangxincheng/p/6006569.html [源码安装,适用GNOME + ...
- mininet下建立拓扑时关于远程控制器的一个小问题
最近重装了系统和mininet后,使用mininet时遇到了一点小问题,一开始忽视了细节,使得自己被这个问题困扰了好一会儿,好在后来还是发现了问题所在,故记录下来. $ sudo mn --topo ...