准备测试环境:
MySQL 5.7.28 社区版 CentOS release 6.10 MySQL Undo参数配置: innodb_undo_tablespaces = 1 innodb_default_row_format = dynamic
准备测试数据:
## 创建测试表 CREATE TABLE `TB001` ( `ID` VARCHAR(20) NOT NULL, `C1` VARCHAR(20) NOT NULL, `C2` VARCHAR(20) NOT NULL, PRIMARY KEY (`ID`), KEY `IDX_C1` (`C1`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; ## 第一次插入数据 INSERT INTO `TB001`(ID,C1,C2)VALUES('AA0001','BB0001','CC0001'),('AA0002','BB0002','CC0002'),('AA0003','BB0003','CC0003'); ## 查看数据 SELECT * FROM TB001; +--------+--------+--------+ | ID | C1 | C2 | +--------+--------+--------+ | AA0001 | BB0001 | CC0001 | | AA0002 | BB0002 | CC0002 | | AA0003 | BB0003 | CC0003 | +--------+--------+--------+
测试操作:
## 将C2列值长度从6扩展至8 UPDATE TB001 SET C2='CC000111' WHERE ID='AA0001'; ## 将C2列值长度从6缩短至4 UPDATE TB001 SET C2='CC03' WHERE ID='AA0003';
更新前叶子节点数据:
06 06 06 00 00 10 00 27 41 41 30 30 30 31 00 00 00 00 05 78 D3 00 00 00 A6 01 10 42 42 30 30 30 31 43 43 30 30 30 31 06 06 06 00 00 18 00 27 41 41 30 30 30 32 00 00 00 00 05 78 D3 00 00 00 A6 01 1E 42 42 30 30 30 32 43 43 30 30 30 32 06 06 06 00 00 20 FF A2 41 41 30 30 30 33 00 00 00 00 05 78 D3 00 00 00 A6 01 2C 42 42 30 30 30 33 43 43 30 30 30 33
更新后叶子节点数据:
06 06 06 00 00 10 00 00 41 41 30 30 30 31 00 00 00 00 05 78 D3 00 00 00 A6 01 10 42 42 30 30 30 31 43 43 30 30 30 31 06 06 06 00 00 18 00 27 41 41 30 30 30 32 00 00 00 00 05 78 D3 00 00 00 A6 01 1E 42 42 30 30 30 32 43 43 30 30 30 32 04 06 06 00 00 20 FF A2 41 41 30 30 30 33 00 00 00 00 05 80 58 00 00 00 AA 01 10 42 42 30 30 30 33 43 43 30 33 30 33 08 06 06 00 00 28 FF B2 41 41 30 30 30 31 00 00 00 00 05 7E 57 00 00 00 A9 01 10 42 42 30 30 30 31 43 43 30 30 30 31 31 31
前后数据对比:
未完待续