1.mysql查询优化器不够成熟,对复杂查询处理较弱;
postgresql有很强大的查询优化器,支持很复杂的查询处理,比如递归查询
2.mysql表修改列,基本上重建表和索引,会花费很长时间;而postgresql只是在数据字典中增加表定义,不会重建表
3.mysql支持标准SQL语法的一小部分,不支持递归查询、通用表达式with等;postgresql都支持
4.对于时间、日期、间隔等时间类型没有秒以下级别的存储类型
5.与postgresql配合的开源软件很多,有很多分布式集群软件,如pgpool 连接池、复制、负载均衡、客户端限制
pgcluster多主机、同步备份
slony数据复制
plploxy水平拆分
6.postgresql是多进程的,而mysql是线程的。并发时,mysql总体处理性能不如postgresql
- 进程:操作系统资源分配基本单位(一个进程崩溃后,在保护模式,不会对其他进程产生影响)
- 线程:处理器任务调度和执行的基本单位(一个线程崩溃整个进程都会受影响)
7.postgresql不仅仅是关系型数据库,还支持存储array、json、jsonb大数据结构
8.postgresql对于字符串支持更好一些,mysql里需要utf8mb4才能显示表情的符号
9.postgresql采用堆表存放(支持更大数据量);mysql采用索引组织表
10.postgresql对子查询支持更好,mysql尽量避免子查询,尽量用json on代替
综上,postgresql比mysql更强大一些