克里斯托夫·佩图斯:ALTER TABLE … SET WITHOUT OIDS 的大陷阱
💡
原文英文,约200词,阅读约需1分钟。
📝
内容提要
PostgreSQL在删除列时,通常不会对表中的数据产生影响,只会在系统目录中标记该列已不可用,但ALTER TABLE ... SET WITHOUT OIDS命令除外,它会重写整个表,可能会占用大量辅助存储空间,可以通过增加maintenance_work_mem来减轻影响。
🎯
关键要点
- 在PostgreSQL中,删除列通常不会影响表中的数据,只是将该列标记为不可用。
- ALTER TABLE ... SET WITHOUT OIDS命令是一个例外,它会重写整个表并重新索引。
- 使用ALTER TABLE ... SET WITHOUT OIDS时,可能会占用大量辅助存储空间。
- 重写表时,所需的存储空间可能达到表的大小。
- 在临时文件存储中,重新索引可能会占用显著的存储空间。
- 可以通过增加maintenance_work_mem来减轻存储空间的影响。
➡️