实验测试admin_move_table的机制(1)
来源:互联网 发布:仓库管理源码php 编辑:程序博客网 时间:2024/06/05 04:59
做reorg的目的主要是为了对数据重新排列以节省不必要的空间使用,同时可以减少刷写缓冲区的次数,提高性能。降低空间占用通过降低表空间高水位来实现。为了对各种reorg的情况进行分析,特别进行了一个实验测试。
1.首先,建立一个测试用的数据库,并建立1个表空间进行测试分析,表空间内建4个表,并插入一些数据。然后查看extent占用。
[root@bogon tmp]# touch /opt/var/orgsp1[root@bogon tmp]# chown db2inst1 /opt/var/orgsp1db2 "create database testorg"db2 connect to testorgdb2 "create tablespace orgsp1 managed by database using (FILE '/opt/var/orgsp1' 64M)"db2 "create table t1 (id int not null primary key,name varchar(20)) IN orgsp1"db2 "create table t2 (id int not null,name varchar(20)) IN orgsp1"db2 "create table t3 (id int not null primary key,name varchar(200)) IN orgsp1"db2 "create table t4 (id int not null,name varchar(200)) IN orgsp1"DB20000I The SQL command completed successfully.db2 "insert into t1 with c1(col1) as (values(1) union all select c1.col1 +1 from c1 where c1.col1<18000) select c1.col1,'this is table t1 ' from c1"db2 "insert into t2 with c1(col1) as (values(1) union all select c1.col1 +1 from c1 where c1.col1<25000) select c1.col1,'this is table t2 ' from c1"db2 "insert into t3 with c1(col1) as (values(1) union all select c1.col1 +1 from c1 where c1.col1<20000) select c1.col1,'T3t3T3t3T3t3T3t3T3t3T3t3T3t3T3t3t3t3t3t3t3t3t3 sdflksadfsa dfjdslkfjsdfjaslkdfsdfsadlfkjsdlkfdsf' from c1"db2 "insert into t4 with c1(col1) as (values(1) union all select c1.col1 +1 from c1 where c1.col1<30000) select c1.col1,'T4t4T4t4T4t4T4t4T4t4T4t4T4t4t4t4t4t4t4t4t4asdfskdfafasfsfsdfasdfjsadfla s sfdasdfsdfadsfas' from c1"db2 list tablespaces show detail……Tablespace ID = 3 Name = ORGSP1 Type = Database managed space Contents = All permanent data. Large table space. State = 0x0000 Detailed explanation: Normal Total pages = 16384 Useable pages = 16352 Used pages = 2368 Free pages = 13984 High water mark (pages) = 2368 Page size (bytes) = 4096 Extent size (pages) = 32 Prefetch size (pages) = 32 Number of containers = 1
现在,已用页2368,高水位2368,现在来看一下它的占用的区块:
db2 disconnect alldb2 deactivate db testorgdb2dart testorg /DHWM /tsi 3 /rptn testorg-1.dart
High water mark: 2368 pages, 74 extents (extents #0 - 73) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 5 0x00 [0023] 5 0x00 [0024] 5 0x00 [0025] 5 0x00 [0026] 5 0x00 [0027] 5 0x00 [0028] 5 0x00 [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] 7 0x00 [0055] 7 0x00 [0056] 7 0x00 [0057] 7 0x00 [0058] 7 0x00 [0059] 7 0x00 [0060] 7 0x00 [0061] 7 0x00 [0062] 7 0x00 [0063] 7 0x00 [0064] 7 0x00 [0065] 7 0x00 [0066] 7 0x00 [0067] 7 0x00 [0068] 7 0x00 [0069] 7 0x00 [0070] 7 0x00 [0071] 7 0x00 [0072] 7 0x00 [0073] 7 0x00
2.现在我们删除t2的数据,对t2进行使用系统临时表空间重组或联机重组,使t2的extent空余出来。
db2 connect to testorgdb2 "delete from t2"db2 "reorg table t2 inplace"db2 disconnect alldb2 deactivate db testorgdb2dart testorg /DHWM /tsi 3 /rptn testorg-2.dart
结果如下:
High water mark: 2368 pages, 74 extents (extents #0 - 73) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] == EMPTY == [0023] == EMPTY == [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] 7 0x00 [0055] 7 0x00 [0056] 7 0x00 [0057] 7 0x00 [0058] 7 0x00 [0059] 7 0x00 [0060] 7 0x00 [0061] 7 0x00 [0062] 7 0x00 [0063] 7 0x00 [0064] 7 0x00 [0065] 7 0x00 [0066] 7 0x00 [0067] 7 0x00 [0068] 7 0x00 [0069] 7 0x00 [0070] 7 0x00 [0071] 7 0x00 [0072] 7 0x00 [0073] 7 0x00
实验1
3-1.现在删除表7的部分数据,id > 7000
db2 connect to testorgdb2 "delete from t4 where id > 7000"db2 "reorg table t4 inplace"db2 list tablespaces show detail... ... Used pages = 1504 High water mark (pages) = 1728... ...
db2 disconnect alldb2 deactivate db testorgdb2dart testorg /DHWM /tsi 3 /rptn testorg-3.dart
High water mark: 1728 pages, 54 extents (extents #0 - 53) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] == EMPTY == [0023] == EMPTY == [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00
4-1.此时表7共占据8个EXTENT,但是中间的EXTENT只有7个EXTENT哦,
此时使用admin_move_table不指定表空间
[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','','', '','','','','','','INIT')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 INDEXNAME INDEXSCHEMA INIT_END 2017-06-30-09.59.37.427887 INIT_START 2017-06-30-09.59.35.606075 STAGING T4AAAAV0s STATUS COPY TARGET T4AAAAV0t UTILITY_INVOCATION_ID 0100000003000000080000000000000000002017063009593742951100000000 VERSION 11.01.0101 10 record(s) selected. Return Status = 0[db2inst1@db22 tmp]$ db2 "select tabname,tableid,tbspaceid from syscat.tables where tabschema='DB2INST1'"TABNAME TABLEID TBSPACEID-------------------------------------------------------------------------------------------------------------------------------- ------- ---------T1 4 3T2 5 3T3 6 3T4 7 3T4AAAAV0t 8 3T4AAAAV0s 9 3 6 record(s) selected.
db2 disconnect alldb2 deactivate db testorgdb2dart testorg /DHWM /tsi 3 /rptn testorg-4.dart
High water mark: 1728 pages, 54 extents (extents #0 - 53) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] 9 0x40* [0025] 9 0x00* [0026] 9 0x41* [0027] 9 0x01* [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00
可以看到:
INIT阶段
- 先根据表7创建了目标表8,建表语句一样,且没有索引,所以8占据两个extent;
- 创建了staging 表9,初始化有索引所以占据4个extent,
下面进行拷贝阶段:
[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','','', '','','','','','','COPY')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 COPY_END 2017-06-30-10.24.47.490292 COPY_OPTS ARRAY_INSERT,NON_CLUSTER COPY_START 2017-06-30-10.24.46.793731 COPY_TOTAL_ROWS 7000 INDEXNAME INDEXSCHEMA INIT_END 2017-06-30-09.59.37.427887 INIT_START 2017-06-30-09.59.35.606075 REPLAY_START 2017-06-30-10.24.47.490860 STAGING T4AAAAV0s STATUS REPLAY TARGET T4AAAAV0t UTILITY_INVOCATION_ID 0100000003000000080000000000000000002017063009593742951100000000 VERSION 11.01.0101 15 record(s) selected. Return Status = 0
来看一下此时数据块的分布:
High water mark: 2464 pages, 77 extents (extents #0 - 76) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] 9 0x40* [0025] 9 0x00* [0026] 9 0x41* [0027] 9 0x01* [0028] 8 0x00 [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] 8 0x00 [0055] 8 0x00 [0056] 8 0x00 [0057] 8 0x00 [0058] 8 0x00 [0059] 8 0x41* [0060] 8 0x01* [0061] 8 0x01 [0062] 8 0x01 [0063] 8 0x01 [0064] 8 0x01 [0065] 8 0x01 [0066] 8 0x01 [0067] 8 0x01 [0068] 7 0x41* [0069] 7 0x01* [0070] 7 0x01 [0071] 7 0x01 [0072] 7 0x01 [0073] 7 0x01 [0074] 7 0x01 [0075] 7 0x01 [0076] 7 0x01
来看一下第二个步骤:
表7除第一个数据块的数据块占据了48,49,50,51,52,53,
表8除第一个数据块的数据块填充了28,54,55,56,57,57,58,
复制的表8多一个数据块呢。
然后第59个extent表8建了索引, 索引占据60*,61,62,63,64,65,66,67这几个extent,
原表7在68extent建了索引,索引占据extent69*,70,71,72,73,74,75,76。
那看到表8是比表7多一个数据块的,然后索引块是一样的。
表8为什么比表7多一个数据块呢?
表8和表7建的这个索引是什么呢?
我们看一下数据块的一些构造,用db2dart来审查表数据:
db2dart testorg /DEMP /oi 7 /tsi 3 /rptn t4-2.dartAction option: DEMP Table-object-ID: 7; Tablespace-ID: 3DART formatted EMP page dump:----------------------------- Traversing extent map for: Object ID: 7 Table space: 3 Object specific mapping info: ----------------------------- DAT extent anchor: 416 416/32=13: extent和pages都是从0开始,所以page416是第14个块也就是extent13的第一个页面,这里存放7的表的EMP信息 Traversing extent map for object type: 0 Tablespace ID: 3, Tablespace Seed: 3, Object: 7 EMP page class: 64, EMP pool page: 416, # entries: 7 Page LSN = 000000000006E900 Pool relative page #'s : 448 1536 1568 1600 1632 1664 1696 Tablespace ID: 3, Tablespace Seed: 3, Object: 7 EMP page class: 64, EMP pool page: 417, # entries: 0 ... ... ... 省略 EMP pool page: 447, # entries: 0 Page LSN = 000000000004180F Pool relative page #'s : INX extent anchor: 2176 extent68上是表7的索引的位图信息 Traversing extent map for object type: 1 Tablespace ID: 3, Tablespace Seed: 3, Object: 7 EMP page class: 65, EMP pool page: 2176, # entries: 8 Page LSN = 0000000000070B98 Pool relative page #'s : 2208 2240 2272 2304 2336 2368 2400 2432 Tablespace ID: 3, Tablespace Seed: 3, Object: 7 EMP page class: 65, EMP pool page: 2177, # entries: 0 ... ... ...省略 EMP pool page: 2207, # entries: 0 Page LSN = 0000000000070A94 Pool relative page #'s :
查看表7上的数据
db2dart testorg /DD /tsi 3 /oi 7 /ps 0 /np 0 /v y /rptn t7-1.dart db2dart testorg /DD /tsi 3 /oi 8 /ps 0 /np 0 /v y /rptn t8-1.dart
对导出的文件使用Beyond Compare对比,发现表7有194个数据页,最后一页还有10个Deleted Record;表8最后一页为195页,最后一页只有一个slot。
查看索引:
[db2inst1@db22 tmp]$ db2 "select indname,indschema,tabschema,tabname from syscat.indexes where tabschema='DB2INST1'"INDNAME INDSCHEMA TABSCHEMA TABNAME COLNAMES ------------------------- ------------- ----------- ------------ -------------SQL170630095420990 SYSIBM DB2INST1 T1 +ID SQL170630095421750 SYSIBM DB2INST1 T3 +ID T4AAAAV0sAFVT7zg DB2INST1 DB2INST1 T4AAAAV0s +ID+NAME T4AAAAV0tAFVT70g DB2INST1 DB2INST1 T4AAAAV0t +ID+NAME T4AAAAV0g DB2INST1 DB2INST1 T4 +ID+NAME 5 record(s) selected.
可以看到因为T4表上没有索引,所以在T4表上建了ID+NAME的索引。
最后一步SWAP:
[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','','', '','','','','','','SWAP')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 CLEANUP_END 2017-06-30-14.54.49.307639 CLEANUP_START 2017-06-30-14.54.47.409582 COPY_END 2017-06-30-10.24.47.490292 COPY_OPTS ARRAY_INSERT,NON_CLUSTER COPY_START 2017-06-30-10.24.46.793731 COPY_TOTAL_ROWS 7000 INDEXNAME INDEXSCHEMA INIT_END 2017-06-30-09.59.37.427887 INIT_START 2017-06-30-09.59.35.606075 ORIGINAL_TBLSIZE 2176 REPLAY_END 2017-06-30-14.54.46.517775 REPLAY_START 2017-06-30-10.24.47.490860 REPLAY_TOTAL_ROWS 0 REPLAY_TOTAL_TIME 1 STATUS COMPLETE SWAP_END 2017-06-30-14.54.47.326936 SWAP_RETRIES 0 SWAP_START 2017-06-30-14.54.46.545552 UTILITY_INVOCATION_ID 0100000003000000080000000000000000002017063009593742951100000000 VERSION 11.01.0101 22 record(s) selected. Return Status = 0
High water mark: 2464 pages, 77 extents (extents #0 - 76) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] == EMPTY == [0014] == EMPTY == [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] 8 0x00 [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] == EMPTY == [0049] == EMPTY == [0050] == EMPTY == [0051] == EMPTY == [0052] == EMPTY == [0053] == EMPTY == [0054] 8 0x00 [0055] 8 0x00 [0056] 8 0x00 [0057] 8 0x00 [0058] 8 0x00 [0059] == EMPTY == [0060] == EMPTY == [0061] == EMPTY == [0062] == EMPTY == [0063] == EMPTY == [0064] == EMPTY == [0065] == EMPTY == [0066] == EMPTY == [0067] == EMPTY == [0068] == EMPTY == [0069] == EMPTY == [0070] == EMPTY == [0071] == EMPTY == [0072] == EMPTY == [0073] == EMPTY == [0074] == EMPTY == [0075] == EMPTY == [0076] == EMPTY ==
清空了staging table,清空了建的索引,完成替换,表的id为8.
这些empty的重新连接数据库后就降下来了。
High water mark: 1888 pages, 59 extents (extents #0 - 58) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] == EMPTY == [0014] == EMPTY == [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] 8 0x00 [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] == EMPTY == [0049] == EMPTY == [0050] == EMPTY == [0051] == EMPTY == [0052] == EMPTY == [0053] == EMPTY == [0054] 8 0x00 [0055] 8 0x00 [0056] 8 0x00 [0057] 8 0x00 [0058] 8 0x00
从extent的变化来看一下都发生了什么?
- 原来的表id7变成了8:4.SWAP阶段:存储过程会迅速使源表脱机,并将源表名称和索引名称指定给影子副本及其索引,然后,使影子表联机,从而替换源表。缺省情况下,会删除源表,但可以使用 KEEP 选项来以另一个名称保留该源表。这个是替换阶段,跟脱机表重组的替换是不一样的,这个admin_move_table在重组过程中是create新的表对象,跟脱机表重组的copy不一样的。
- 原来表7占据的13(EMP),14(第一个数据块)EMPTY了,这两个块的位置移动到22和23了,这个这样理解:1.INIT阶段:创建源表的影子副本(shadow table),初始化的EMP和第一个数据块利用了空出来的EXTENT22和23
- 原来占据的其他6个数据块,一个在t2空出来的extent28上,其他5个新申请了extent。这个怎么发生的呢?
- 原表7占据的48-53EMPTY了。SWAP阶段最后删除源表。
实验2
3-2.现在删除表7的部分数据,id > 7000
db2 connect to testorgdb2 "delete from t4 where id > 7000"db2 "reorg table t4 inplace"db2 list tablespaces show detail... ... Used pages = 1504 High water mark (pages) = 1728... ...
db2 disconnect alldb2 deactivate db testorgdb2dart testorg /DHWM /tsi 3 /rptn testorg-3.dart
High water mark: 1728 pages, 54 extents (extents #0 - 53) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] == EMPTY == [0023] == EMPTY == [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00
4-2.此时表7共占据8个EXTENT,但是中间的EXTENT只有7个EXTENT哦,
此时使用admin_move_table第二种方式
(1).第一步:首先手工创建表:
db2 "CREATE TABLE T4_TARGET (id int not null,name varchar(200)) IN orgsp1"
High water mark: 1728 pages, 54 extents (extents #0 - 53) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00
(2).然后调用存储过程传入目标表的名称:
CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1', --tabschema'T4', --tabname'T4_TARGET', --target_tabname'', --V.options'INIT' --operation)[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','T4_TARGET','', 'INIT')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 INDEXNAME INDEXSCHEMA INIT_END 2017-06-29-19.12.38.556102 INIT_START 2017-06-29-19.12.36.453520 PAR_COLDEF using a supplied target table so COLDEF could be different STAGING T4AAAAV0s STATUS COPY TARGET T4_TARGET UTILITY_INVOCATION_ID 0100000003000000080000000000000000002017062919123857894000000000 VERSION 11.01.0101 11 record(s) selected. Return Status = 0
High water mark: 1728 pages, 54 extents (extents #0 - 53) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] 9 0x40* [0025] 9 0x00* [0026] 9 0x41* [0027] 9 0x01* [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00
从这里看出表9占据了24,25,26,27这几个块,这是个有索引的表。
[db2inst1@db22 tmp]$ db2 "select tabname,tableid from syscat.tables where tabschema='DB2INST1'"TABNAME TABLEID-------------------------------------------------------------------------------------------------------------------------------- -------T1 4T2 5T3 6T4 7T4_TARGET 8T4AAAAV0s 9 6 record(s) selected.
表9应该是staging table。
[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','T4_TARGET','', 'COPY')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 COPY_END 2017-06-29-19.20.56.885452 COPY_OPTS ARRAY_INSERT,NON_CLUSTER COPY_START 2017-06-29-19.20.56.195036 COPY_TOTAL_ROWS 7000 INDEXNAME INDEXSCHEMA INIT_END 2017-06-29-19.12.38.556102 INIT_START 2017-06-29-19.12.36.453520 PAR_COLDEF using a supplied target table so COLDEF could be different REPLAY_START 2017-06-29-19.20.56.885893 STAGING T4AAAAV0s STATUS REPLAY TARGET T4_TARGET UTILITY_INVOCATION_ID 0100000003000000080000000000000000002017062919123857894000000000 VERSION 11.01.0101 16 record(s) selected. Return Status = 0
[0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] 9 0x40* [0025] 9 0x00* [0026] 9 0x41* [0027] 9 0x01* [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] == EMPTY == [0055] == EMPTY == [0056] == EMPTY == [0057] == EMPTY == [0058] == EMPTY == [0059] 8 0x41* [0060] 8 0x01* [0061] 8 0x01 [0062] 8 0x01 [0063] 8 0x01 [0064] 8 0x01 [0065] 8 0x01 [0066] 8 0x01 [0067] 8 0x01 [0068] 7 0x41* [0069] 7 0x01* [0070] 7 0x01 [0071] 7 0x01 [0072] 7 0x01 [0073] 7 0x01 [0074] 7 0x01 [0075] 7 0x01 [0076] 7 0x01
COPY阶段完成之后,可以看到54-58是EMPTY的,54-58为什么是EMPTY我们的原表7是没有索引的,在copy阶段,表8有了索引,索引位图和第一个索引块占据了59,60号EXTENT。然后61,62,63,64,65,66,67这几个EXTENT都是索引哎。然后为原表7创建了索引,索引位图和索引块占据了9个EXTENT,和表8是一致的,这一步到底干了啥?
失败了。。因为这个admin_move_table是只能移动到另一个表空间的。同一个表空间中被报SQL2104N
The ADMIN_MOVE_TABLE procedure could not be completed at this time by this user.
Explanation:从一个表空间移动到另一个表空间:You can use the SYSPROC.ADMIN_MOVE_TABLE procedure to move data from one table space to a another table space.
但联机移动表的一些规则可见一斑了。
先复原:
operation为CANCEL:
High water mark: 2464 pages, 77 extents (extents #0 - 76) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 8 0x40* [0023] 8 0x00* [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] 8 0x00 [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] 8 0x00 [0055] 8 0x00 [0056] 8 0x00 [0057] 8 0x00 [0058] 8 0x00 [0059] 8 0x41* [0060] 8 0x01* [0061] 8 0x01 [0062] 8 0x01 [0063] 8 0x01 [0064] 8 0x01 [0065] 8 0x01 [0066] 8 0x01 [0067] 8 0x01 [0068] == EMPTY == [0069] == EMPTY == [0070] == EMPTY == [0071] == EMPTY == [0072] == EMPTY == [0073] == EMPTY == [0074] == EMPTY == [0075] == EMPTY == [0076] == EMPTY ==
然后调用cleanup: 额,SQL2104N The ADMIN_MOVE_TABLE procedure could not be completed at this time by this user. Reason code: “8”. SQLSTATE=5UA0M
原因码8表示:No online move table operation is in progress; therefore, the specified operation is not allowed.
删除drop table t4_target之后:
High water mark: 2176 pages, 68 extents (extents #0 - 67) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] == EMPTY == [0023] == EMPTY == [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] == EMPTY == [0055] == EMPTY == [0056] == EMPTY == [0057] == EMPTY == [0058] == EMPTY == [0059] == EMPTY == [0060] == EMPTY == [0061] == EMPTY == [0062] == EMPTY == [0063] == EMPTY == [0064] == EMPTY == [0065] == EMPTY == [0066] == EMPTY == [0067] == EMPTY ==
这些怎么截断?在线重组7试试:
额,不行哦。
后面就没有了,可能是需要等一段时间。
嗯,使用不同的表空间再来看一下:
#创建一个新的表空间[root@db22 opt]# touch /opt/var/orgsp2[root@db22 opt]# chown db2inst1 /opt/var/orgsp2
(1).第一步:首先手工创建表:
db2 "create tablespace orgsp2 managed by database using (FILE '/opt/var/orgsp2' 64M)"db2 "CREATE TABLE T4_TARGET (id int not null,name varchar(200)) IN orgsp2"
tsi:5High water mark: 160 pages, 5 extents (extents #0 - 4) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00*
(2).然后调用存储过程传入目标表的名称:
CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1', --tabschema'T4', --tabname'T4_TARGET', --target_tabname'', --V.options'INIT' --operation)[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','T4_TARGET','', 'INIT')"[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','T4_TARGET','', 'INIT')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 INDEXNAME INDEXSCHEMA INIT_END 2017-06-29-20.18.39.280067 INIT_START 2017-06-29-20.18.36.568798 PAR_COLDEF using a supplied target table so COLDEF could be different STAGING T4AAAAV0s STATUS COPY TARGET T4_TARGET UTILITY_INVOCATION_ID 0100000005000000080000000000000000002017062920183928830600000000 VERSION 11.01.0101 11 record(s) selected. Return Status = 0
tsi:5
High water mark: 288 pages, 9 extents (extents #0 - 8) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 5 0x40* [0006] 5 0x00* [0007] 5 0x41* [0008] 5 0x01*
tsi:3 的extent没什么变化,高水位到extent53了。
从这里看出表9占据了24,25,26,27这几个块,这是个有索引的表。
[db2inst1@db22 tmp]$ db2 "select tabname,tableid,tbspaceid from syscat.tables where tabschema='DB2INST1'"TABNAME TABLEID TBSPACEID-------------------------------------------------------------------------------------------------------------------------------- ------- ---------T1 4 3T2 5 3T3 6 3T4 7 3T4_TARGET 4 5T4AAAAV0s 5 5 6 record(s) selected.
[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','T4_TARGET','', 'COPY')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 COPY_END 2017-06-29-20.27.57.617520 COPY_OPTS ARRAY_INSERT,NON_CLUSTER COPY_START 2017-06-29-20.27.56.872079 COPY_TOTAL_ROWS 7000 INDEXNAME INDEXSCHEMA INIT_END 2017-06-29-20.18.39.280067 INIT_START 2017-06-29-20.18.36.568798 PAR_COLDEF using a supplied target table so COLDEF could be different REPLAY_START 2017-06-29-20.27.57.618341 STAGING T4AAAAV0s STATUS REPLAY TARGET T4_TARGET UTILITY_INVOCATION_ID 0100000005000000080000000000000000002017062920183928830600000000 VERSION 11.01.0101 16 record(s) selected. Return Status = 0
tsi:5
High water mark: 768 pages, 24 extents (extents #0 - 23) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 5 0x40* [0006] 5 0x00* [0007] 5 0x41* [0008] 5 0x01* [0009] 4 0x00 [0010] 4 0x00 [0011] 4 0x00 [0012] 4 0x00 [0013] 4 0x00 [0014] 4 0x00 [0015] 4 0x41* [0016] 4 0x01* [0017] 4 0x01 [0018] 4 0x01 [0019] 4 0x01 [0020] 4 0x01 [0021] 4 0x01 [0022] 4 0x01 [0023] 4 0x01
tsi:3
High water mark: 1792 pages, 56 extents (extents #0 - 55) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] 7 0x40* [0014] 7 0x00* [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] 7 0x41* [0023] 7 0x01* [0024] 7 0x01 [0025] 7 0x01 [0026] 7 0x01 [0027] 7 0x01 [0028] 7 0x01 [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] 7 0x00 [0049] 7 0x00 [0050] 7 0x00 [0051] 7 0x00 [0052] 7 0x00 [0053] 7 0x00 [0054] 7 0x01 [0055] 7 0x01
大发现:可以看到22-28的位置建了表7的索引,然后索引占用了8个EXTENT,然后还又新申请了两个。
然后进行move截断:
额,还是不行啊。。。。。。。。。。。。
SQL2104N The ADMIN_MOVE_TABLE procedure could not be completed at this time
by this user. Reason code: "4". SQLSTATE=5UA0M
明天再来看吧。
------おはよう~宝宝来上班了---------------------
~~今天就是先测试把move table能跑通吧。然后看了下文档,发现最后一步是SWAP。。。。。。。。。。。~~
[db2inst1@db22 tmp]$ db2 "CALL SYSPROC.ADMIN_MOVE_TABLE('DB2INST1','T4','T4_TARGET','', 'SWAP')" Result set 1 -------------- KEY VALUE -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- AUTHID DB2INST1 CLEANUP_END 2017-06-30-09.18.00.486982 CLEANUP_START 2017-06-30-09.17.58.933167 COPY_END 2017-06-29-20.27.57.617520 COPY_OPTS ARRAY_INSERT,NON_CLUSTER COPY_START 2017-06-29-20.27.56.872079 COPY_TOTAL_ROWS 7000 INDEXNAME INDEXSCHEMA INIT_END 2017-06-29-20.18.39.280067 INIT_START 2017-06-29-20.18.36.568798 ORIGINAL_TBLSIZE 2176 PAR_COLDEF using a supplied target table so COLDEF could be different REPLAY_END 2017-06-30-09.17.58.161682 REPLAY_START 2017-06-29-20.27.57.618341 REPLAY_TOTAL_ROWS 0 REPLAY_TOTAL_TIME 2 STATUS COMPLETE SWAP_END 2017-06-30-09.17.58.836838 SWAP_RETRIES 0 SWAP_START 2017-06-30-09.17.58.203611 UTILITY_INVOCATION_ID 0100000005000000080000000000000000002017062920183928830600000000 VERSION 11.01.0101 23 record(s) selected. Return Status = 0
tsi:5
High water mark: 768 pages, 24 extents (extents #0 - 23) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] == EMPTY == [0006] == EMPTY == [0007] == EMPTY == [0008] == EMPTY == [0009] 4 0x00 [0010] 4 0x00 [0011] 4 0x00 [0012] 4 0x00 [0013] 4 0x00 [0014] 4 0x00 [0015] == EMPTY == [0016] == EMPTY == [0017] == EMPTY == [0018] == EMPTY == [0019] == EMPTY == [0020] == EMPTY == [0021] == EMPTY == [0022] == EMPTY == [0023] == EMPTY ==
可以看到删除了staging table;删除了在表t4上创建的索引。
tsi:3
High water mark: 1792 pages, 56 extents (extents #0 - 55) [0000] 65534 0x0e [0001] 65534 0x0e [0002] 65535 0x00 [0003] 4 0x40* [0004] 4 0x00* [0005] 4 0x41* [0006] 4 0x01* [0007] 5 0x40* [0008] 5 0x00* [0009] 6 0x40* [0010] 6 0x00* [0011] 6 0x41* [0012] 6 0x01* [0013] == EMPTY == [0014] == EMPTY == [0015] 4 0x00 [0016] 4 0x01 [0017] 4 0x00 [0018] 4 0x00 [0019] 4 0x00 [0020] 4 0x01 [0021] 4 0x00 [0022] == EMPTY == [0023] == EMPTY == [0024] == EMPTY == [0025] == EMPTY == [0026] == EMPTY == [0027] == EMPTY == [0028] == EMPTY == [0029] 6 0x00 [0030] 6 0x00 [0031] 6 0x00 [0032] 6 0x00 [0033] 6 0x00 [0034] 6 0x00 [0035] 6 0x01 [0036] 6 0x00 [0037] 6 0x00 [0038] 6 0x00 [0039] 6 0x00 [0040] 6 0x00 [0041] 6 0x00 [0042] 6 0x01 [0043] 6 0x00 [0044] 6 0x00 [0045] 6 0x00 [0046] 6 0x00 [0047] 6 0x00 [0048] == EMPTY == [0049] == EMPTY == [0050] == EMPTY == [0051] == EMPTY == [0052] == EMPTY == [0053] == EMPTY == [0054] == EMPTY == [0055] == EMPTY ==
可以看到删除了索引数据。
- 实验测试admin_move_table的机制(1)
- admin_move_table的重组机制验证(失败了)
- admin_move_table的重组机制验证(cluster index)
- 数据库实验测试(1)
- DB2 admin_move_table
- 软件测试实验1
- MYSQL_innodb的加锁机制实验
- 内核的定时机制实验
- 数据库实验测试(2)
- 数据库实验测试(3)
- 算数测试(Java实验)
- 网络入侵检测系统(Snort)实验 实验平台的搭建和测试
- Linux内核|实验五 内核的定时机制实验
- 具有分页机制的存储器扩展实验
- 垃圾回收机制的实验记录
- Qt事件机制的小实验
- Unity3D实验,关于碰撞消息的机制
- DB2在线移动表ADMIN_MOVE_TABLE
- 数据结构面试整理(2)
- matlab 偏最小二乘法 函数plsregress
- 当 Direct3D 遇上中国古诗词
- crond和crontab调研
- Android EventBus简单使用
- 实验测试admin_move_table的机制(1)
- 儿童编程微课堂-Scratch准备篇:一、Scratch简介
- oracle获取的执行计划区别及获取真实执行计划
- 列写三角函数表(C语言实现)
- C++ API设计—— API特征
- 利用PageTransformer实现viewpager的视差效果变换和反转特效
- maven+springMVC+mybatis+junit详细搭建过程
- yii2的场景处理
- condition await signal 和 notity wait