暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL和PG对比

原创 飞鸟-柯 2022-12-15
1102

对比项

MySQL

PostgreSQL

数据库对比

版本

MySQL 8

PostgreSQL 10

定位

MySQL适用于简单web应用程序或者需要简单schema、SQL执行数据库操作的应用,具有强大的便利性。更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、facebook、alibaba)

PG完全支持ACID,对开发人员和DBA非常友好,是跨任何域的高并发事务、复杂应用程序最佳选择,可以满足基于WEB和移动的各种应用程序服务。PG更加适合严格的企业应用场景(比如金融、电信、ERP、CRM)

架构对比

1、MySQL是线程模式;
2、线程模式数据本身就是在进程空间内都是共享的,不同线程访问只需要控制好线程之间的同步。线程模式对资源消耗比较少。所以MySQL能支持远比oracle多的更多的连接。

1、PostgreSQL是进程模式;
2、进程模式对多CPU利用率比较高。进程模式共享数据需要用到共享内存

数据类型

支持许多数据类型,从传统的数据类型(integer、date、timestamp)到复杂类型(json、xml、text)

不止支持传统数据类型:numeric、strings、date、decimal等,还支持非结构的数据类型:json、xml、hstore等以及网络数据类型、bit字符串,还有ARRAYS,地理数据类型

复制

异步、半同步,复制简单灵活,在容灾、分布式实现明显优势

可以异步也可以同步

性能

1、高并发读写,负载逼近极限下,MySQL 明显出现一个波峰后下滑;
2、mysql的innodb引擎,可以充分优化利用系统所有内存

高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降;
超大内存下PG对内存使用的不那么充分(需要根据内存情况合理配置)

稳定性

用户都遇到过Server级的数据库丢失的场景
通过完善高可用架构、备份方案实现

PostgreSQL 的稳定性极强

安全性

1、原生仅支持密码验证,可MD5加密;
2、通过第三方插件可实现LDAP/PAM认证机制
3、 MySQL对表的权限到字段级别

1、支持操作系统、密码、SSL、PAM、MD5加密认证方式;
2、支持基于连接来源、用户、连接目标库等维度设置的黑白名单;
3、没有闪回功能

高可用性

1、MySQL可以适应24/7运行。在绝大多数情况下,你不需要为MySQL运行任何清除程序
2、innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。

1、PostgreSQL目前仍不完全适应24/7运行,这是因为你必须每隔一段时间运行一次VACUUM。
2、新老数据一起存放,需要定时触 发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀;

多表校验

MySQL的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作嵌套循环连接(nested-loop),多个表关联查询(超过3张表)效率相比PG较低

对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强支持嵌套循环连接(nested-loop)、排序-合并连接(sort-merge join)、散列连接(hash join),效率高于MYSQL



结论

1、满足业务系统所需;
2、MP有MYSQL版本,可以快速实现切换;
3、项目经验丰富,熟练度高
4、 在业务场景简单下优势明显

1、最接近ORACLE的开源数据库;
2、MP无PG版本,迁移PG会带来大量的平台开发工作量;
3、项目经验缺少,熟练人员储备不足。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论