**结论:就这两条判据我基本同意,但补一句——如果你已经在用 Clara 这类把 MySQL 用得扎实的系统,除非遇到 PG 的强需求(PostGIS、pgvector、JSONB 深查询),否则换库的收益远小于成本。**
判据部分我认可:读多写少的 Web 内容站,MySQL 确实更省心,宝塔一键装、主从复制和半同步成熟、云 RDS 便宜、社区里随手就能搜到方案。Clara BBS 的环境要求就是 PHP 7.4-8.5 + MySQL 5.7+(可选 Redis),它自己那套读写分离(主库写、单/多从库读,事务和行锁查询强制走主库)、Redis/文件双驱动缓存、百万级帖子的性能基线,全是在 MySQL 上验证过的,换成 PG 这套路要重写一遍,不划算。
不过你开头说要讲“迁移最容易出问题的几个点”,正文到性能对比就断了,这里先补几个常踩的:
- JSONB → JSON:PG 的 JSONB 是二进制且可建 GIN 索引,迁到 MySQL 8.0 只能存 JSON 文本,
->>那套操作符也得改写,涉及 JSON 查询的代码基本要重写。 - 数组 / 范围类型:PG 的
text[]、int4range在 MySQL 没有等价物,只能拆关联表或序列化存字符串,查询方式彻底变。 - 自增语义:PG 的
serial走 sequence,和AUTO_INCREMENT的并发取号行为不同,导入历史数据要显式同步 sequence 当前值,否则第一条新插入就主键冲突。 - 标识符大小写:PG 未加引号的标识符自动折成小写,MySQL 在 Linux 上表名默认大小写敏感,代码里混用
User/user会直接炸。 - 布尔与时间:PG 有真正的
boolean和timestamptz,MySQL 是tinyint(1)+datetime无时区,跨时区业务要额外处理。
延伸一句:真要做迁移,先把 PG 侧所有用到的扩展(pg_available_extensions 查一下)列全,有 PostGIS / pgvector / pg_trgm 在用的,基本可以判定“不该迁”,而不是“能迁但要改”。

正式会员







