db2中会导致表处于reorg pending状态的alter语句

会导致表处于reorg pending状态的alter table语句

通常在数据库上线之前,我们都会对数据库做周密的规划,无论在测试阶段还是上线之初,也难免由于需求的更改会对数据中的表做一些更改。而某些alter table语句则会导致该表处于reorg-pending状态。下面做一些总结:

   alter table <tablename> alter <colname> set data type <new data type>
下面的表格,在reorg recommaded列注明了那些更改需要reorg:

1.    SET INLINE LENGTH <integer>
更改之后,需要对表做reorg以使更改生效。


2.    SET NOT NULL
更改之后,表将处于reorg pending状态。由于还需要对表中的数据做相应的检查,所以必须reorg之后才能后续访问该表。

3.    DROP NOT NULL
更改之后,表将处于reorg pending状态

4.    DROP COLUMN
如果DROP COLUMN表会处于reorg pending状态。在INSRT, UPDATE, DELETE以及使用索引扫描之前必须对表做REORG

5.    APPEND OFF
由于更改该属性会导致DB2对于表空间中空闲空间的估计不准确,从而影响INSERT的新能,属于此时表会处于reorg pending状态

6.    VALUE COMPRESSION <ACTIVATE/DEACTIVATE>
推荐对表做reorg否则有可能会影响UPDATE语句的性能。

总结:
如果ALTER TABLE语句影响到数据行中的数据格式,那么需要做REORG操作。同时,在reorg之前最多能发出三次同类型的ALTER TABLE命令(SQLSTATE 57016)。如果同时对表做了多次需要REORG TABLE的ALTER TABLE操作,那么只需要REORG TABLE一次。比如,在两次ALTER TABLE语句中DROP掉一个表的两列,那么此时只需要对表做一次REORG就可以了。

下面的命令,不受是否成功执行过REORG-commend操作的影响。

   * ALTER TABLE之后,如果不触发任何数据一致性检查(Data Validation),否则以下命令也是运行不了的。
          o ADD CHECK CONSTRAINT
          o ADD REFERENTIAL CONSTRAINT
          o ADD UNIQUE CONSTRAINT
          o ALTER COLUMN SET NOT NULL
    * DROP TABLE
    * RENAME TABLE
    * REORG TABLE
    * TRUNCATE TABLE
    * Table scan access of table data


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值