七叶笔记 » 数据库 » postgresql 修改字段长度的操作

postgresql 修改字段长度的操作

通过上面的一句话就可以把你的表中相应的字段的长度修改为3000.

补充:PostgreSQL字符类型长度变更的性能

背景

业务有时会遇到表中的字符型字段的长度不够用的问题,需要修改表定义。但是表里的数据已经很多了,修改字段长度会不会造成应用堵塞呢?

测试验证

做了个小测试,如下

建表并插入1000w数据

变更varchar类型长度

变更char类型长度

变更char类型,varchar和text类型互转

定义变更后的数据

定义变更后,数据位置未变,即没有产生新的tuple

除varchar扩容以外的定义变更,每个tuple产生一条WAL记录

结论

varchar扩容,varchar转text只需修改元数据,毫秒完成。

其它转换需要的时间和数据量有关,1000w数据10~40秒,但是不改变数据文件,只是做检查。

缩容时如果定义长度不够容纳现有数据报错

不建议使用char类型,除了埋坑几乎没什么用,这一条不仅适用与PG,所有关系数据库应该都适用。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持七叶笔记。如有错误或未考虑完全的地方,望不吝赐教。

相关文章