会导致表处于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
分享到:
相关推荐
在DB2数据库中,表空间不足可能会导致各种问题,如查询性能下降、数据存储不当等。因此,解决DB2表空间不足问题非常重要。 解决DB2表空间不足问题的方法有多种,下面我们将介绍其中的一些方法: 1.增加表空间大小...
db2 中 REORG 表的完整过程及应用场景 REORG(重组)是 db2 中一种重要的表维护操作,它可以帮助解决死锁或锁超时的问题,但是在进行 REORG 操作之前,需要了解完整的 REORG 表过程。下面我们将详细介绍 REORG 表的...
- 更新数据:`UPDATE`语句在两个系统中基本一致,但Oracle允许在单个`UPDATE`语句中更新多个表,DB2通常限制为单表更新。 - 删除数据:`DELETE FROM`在两者中也是相同的,但Oracle的`TRUNCATE TABLE`用于快速删除...
接下来,使用`ALTER TABLE`语句来修改新表中某一列的数据类型。在这个例子中,我们修改的是`SELL_FEE`列的数据类型为`DECIMAL(5,0)`。 ```sql ALTER TABLE FA_DAILY_REPORT_ITEM810 ALTER COLUMN SELL_FEE SET DATA...
如果一个表(T2)的外键引用了另一个表(T1)的主键,而T2中有T1中不存在的主键值,那么 `EXCEPTIONS` 设置为1将允许1次这样的异常,超过这个次数,`CHECK DATA` 操作就会停止,并记录错误,将状态设为 `CHECK-...
DB2在处理表空间中的索引时,可能会遇到分散存储的索引页面,而这些页面不再物理上连续。这导致DB2在进行索引扫描时,需要频繁地进行磁盘I/O操作来获取分散的索引页面,从而增加了扫描时间,使得RUNSTATS运行缓慢。 ...
- **临时表不能建索引**:在DB2中,临时表不允许创建索引,这意味着对于大量数据的操作可能会降低性能。 - **cursor不能定义为withur(可以但…)**:虽然在某些情况下可以定义游标为`WITH UR`模式,但这并不是一个...
过多的表会导致性能下降,特别是当查询涉及到跨表操作时。可以通过以下措施来降低表的数量: 1. **合并相似表**:将具有相似数据结构的表合并。 2. **清理旧表**:定期删除不再使用的表。 #### 二十八、如何快速...
db2 reorg table ydd db2 runstats on table ydd with distribution and indexes all 整理表的数据和索引。 13. 导出表数据 db2 export to c:\dftz.txt of del select * from dftz db2 export to c:\dftz.ixf of ...
- **描述**:当未明确指定列所在的表时,DB2会尝试自动匹配一个表中的列。 - **处理方法**:确保所有列名前都加上表名以避免歧义。 **4. +09801568 - 动态SQL语句用分号结束** - **描述**:动态SQL语句必须以...
### DB2专有名词解释 #### INSTANCE (实例) 在DB2环境中,**实例**是指运行DB2数据库管理系统软件的一个特定进程集合。...一个操作系统上可以安装多个DB2实例,每...使用`DB2 REORG`命令可以重新组织表,以改善查询性能。...
DB2\_REORG用于执行数据库重组任务,优化表和索引的物理存储。 三、DB2内存结构 进程与内存管理密切相关。DB2使用私有地址空间(PAS)和共享地址空间(SAS)来组织内存。PAS包含每个SQL进程的私有内存,用于存储...
首先,我们要了解REORG 和 REORGCHK以及RUNSTATS这三种DB2命令,它们在数据库维护中起着至关重要的作用。 1. **REORG**: 这个命令用于重新组织数据库对象,如表、索引等,以优化物理存储结构。当数据发生大量插入、...
**题干**:成功执行表空间恢复命令后,表空间会处于以下哪种状态? - A. Restore pending - B. Recovery pending - C. Restore in progress - D. Rollforward pending **答案**:D. Rollforward pending **解析**...
1. **临时表不能建索引:** 在DB2中,临时表无法创建索引,这可能会导致性能问题。 2. **CURSOR不能定义为WITH UR:** 虽然文档中提到可以这样做,但在实际应用中可能不可行。 3. **CURSOR ORDER BY以后不能FOR UPDATE...
在DB2中,`RUNSTATS`是一个重要的实用程序,用于收集表和索引的统计信息,这些信息对优化查询计划和提高查询性能至关重要。当数据库的大小或数据分布发生变化时,运行`RUNSTATS`可以确保数据库管理系统(DBMS)拥有...
在Windows 10环境下,可以通过DB2命令行处理器执行一系列SQL语句来完成表空间的创建。 ##### 20. 创建数据库 ```bash db2 "create by zfdb using codeset gbk territory CN collate using identity" ``` 创建一个名...
在DB2数据库中,更新执行计划是一个关键的操作,因为它直接影响SQL语句的执行效率。DB2采用基于成本的优化器(CBO)来确定SQL语句的最佳执行路径。CBO根据多个因素,如CPU成本、I/O成本、系统目录中的统计信息以及...