【 TiDB 使用环境】测试/ Poc
【 TiDB 版本】7.5.1
将一个表结构的字段从varchar(100)改为varchar(200),速度很快,毫秒级别。但是如果从varchar(200)改为varchar(100),速度非常慢,admin show ddl jobs查看,发现该操作状态为"write reorganization",请问是何原因
1 个赞
varchar(100)改为varchar(200),应该只需要改元数据
varchar(200)改为varchar(100),需要回填数据,都得再写一遍
7 个赞
一般类型的大小都是小变大,很少大变小,为什么需要改小的啊
所有缩小,都是把原来的清除,再写入
考虑到数据问题
为啥会变小,这是什么操作,变小的话为了保证数据是对的,应该需要重新写一遍吧
感觉是内部采用了简单的处理逻辑导致的。
字段扩位只需要修改一些元数据,但是缩短就涉及到缩短后是否合法的问题了。
我猜tidb内部逻辑没有记录表字段目前数据的最大长度,如果记录了当前所有行的最大长度,应该也可以做到修改元素据就完事吧?
一个不处理数据一个要处理数据的区别
变小会自动截取吗
如果遇到超过100的呢,更改是退出还是继续
会报错退出
嗯嗯,明白了
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。