zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java 创建过滤器 解析xml文件
    web页面隐藏鼠标
    dom4j微信接口开发
    php实现远程网络文件下载到服务器指定目录 阿星小栈
    laravel 框架给$request添加数据 阿星小栈
    Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command. 阿星小栈
    在vue项目中使用echarts 阿星小栈
    js 数组、时间、邮箱等处理方法 阿星小栈
    iview 在Table组件render 中使用Poptip组件 阿星小栈
    逐步解决动态添加样式导致的元素闪烁 阿星小栈
  • 原文地址:https://www.cnblogs.com/jackhub/p/3147219.html
Copyright © 2011-2022 走看看