网站备案照相,前端工程师招聘,苏州到深圳物流公司,免费24小时在线心理医生关于SQL特性支持情况的对比#xff0c;可以参考#xff1a;http://www.sql-workbench.net/dbms_comparison.html9. 主从复制安全性PGSQL同步流复制、强同步(remote apply)、高安全#xff0c;不会丢数据PGSQL同步流复制#xff1a;所有从库宕机#xff0c;主库会罢工…关于SQL特性支持情况的对比可以参考http://www.sql-workbench.net/dbms_comparison.html9. 主从复制安全性PGSQL同步流复制、强同步(remote apply)、高安全不会丢数据PGSQL同步流复制所有从库宕机主库会罢工主库无法自动切换为异步流复制(异步模式)需要通过增加从库数量来解决一般生产环境至少有两个从库手动解决在PG主库修改参数synchronous_standby_names 并执行命令 pgctl reload 把主库切换为异步模式主从数据完全一致是高可用切换的第一前提所以PGSQL选择主库罢工也是可以理解MySQL增强半同步复制 mysql5.7版本增强半同步才能保证主从复制时候不丢数据mysql5.7半同步复制相关参数参数rpl_semi_sync_master_wait_for_slave_count 等待至少多少个从库接收到binlog主库才提交事务一般设置为1性能最高参数rpl_semi_sync_master_timeout 等待多少毫秒从库无回应自动切换为异步模式一般设置为无限大不让主库自动切换为异步模式所有从库宕机主库会罢工因为无法收到任何从库的应答包手动解决在MySQL主库修改参数rpl_semi_sync_master_wait_for_slave_count010. 多字段统计信息PGSQL支持多字段统计信息MySQL不支持多字段统计信息11. 索引类型PGSQL多种索引类型(btree , hash , gin , gist , sp-gist , brin , bloom , rum , zombodb , bitmap部分索引表达式索引)MySQLbtree 索引全文索引(低效)表达式索引(需要建虚拟列)hash 索引只在内存表12. 物理表连接算法PGSQL支持 nested-loop join 、hash join 、merge joinMySQL只支持 nested-loop join13. 子查询和视图性能PGSQL子查询视图优化性能比较高MySQL视图谓词条件下推限制多子查询上拉限制多14. 执行计划即时编译PGSQL支持JIT 执行计划即时编译使用LLVM编译器MySQL不支持执行计划即时编译15. 并行查询PGSQL并行查询(多种并行查询优化方法)并行查询一般多见于商业数据库是重量级功能MySQL有限只支持主键并行查询16. 物化视图PGSQL支持物化视图MySQL不支持物化视图17. 插件功能PGSQL支持插件功能可以丰富PGSQL的功能GIS地理插件时序数据库插件 向量化执行插件等等MySQL不支持插件功能18. check约束PGSQL支持check约束MySQL不支持check约束可以写check约束但存储引擎会忽略它的作用因此check约束并不起作用(mariadb 支持)19. gpu 加速SQLPGSQL可以使用gpu 加速SQL的执行速度MySQL不支持gpu 加速SQL 的执行速度20. 数据类型PGSQL数据类型丰富如 ltreehstore数组类型ip类型text类型有了text类型不再需要varchartext类型字段最大存储1GBMySQL数据类型不够丰富21. 跨库查询PGSQL不支持跨库查询这个跟Oracle 12C以前一样MySQL可以跨库查询22. 备份还原PGSQL备份还原非常简单时点还原操作比SQL Server还要简单完整备份wal归档备份(增量)假如有一个三节点的PGSQL主从集群可以随便在其中一个节点做完整备份和wal归档备份MySQL备份还原相对不太简单完整备份binlog备份(增量)完整备份需要percona的XtraBackup工具做物理备份MySQL本身不支持物理备份时点还原操作步骤繁琐复杂23. 性能视图PGSQL需要安装pg_stat_statements插件pg_stat_statements插件提供了丰富的性能视图如等待事件系统统计信息等不好的地方是安装插件需要重启数据库并且需要收集性能信息的数据库需要执行一个命令create extension pg_stat_statements命令否则不会收集任何性能信息比较麻烦MySQL自带PS库默认很多功能没有打开而且打开PS库的性能视图功能对性能有影响(如内存占用导致OOM bug)24. 安装方式PGSQL有各个平台的包rpm包deb包等等相比MySQL缺少了二进制包一般用源码编译安装安装时间会长一些执行命令多一些MySQL有各个平台的包rpm包deb包等等源码编译安装、二进制包安装一般用二进制包安装方便快捷25. DDL操作PGSQL加字段、可变长字段类型长度改大不会锁表所有的DDL操作都不需要借助第三方工具MySQL由于大部分DDL操作都会锁表例如加字段、可变长字段类型长度改大所以需要借助percona-toolkit里面的pt-online-schema-change工具去完成操作将影响减少到最低特别是对大表进行DDL操作26. 大版本发布速度PGSQLPGSQL每年一个大版本发布大版本发布的第二年就可以上生产环境版本迭代速度很快PGSQL 10正式版推出时间2017年PGSQL 11正式版推出时间2018年PGSQL 12正式版推出时间2019年MySQLMySQL的大版本发布一般是2年~3年一般大版本发布后的第二年才可以上生产环境避免有坑版本发布速度比较慢MySQL5.6正式版推出时间2013年MySQL5.7正式版推出时间2015年MySQL8.0正式版推出时间2018年27. returning语法PGSQL支持returning语法returning clause 支持 DML 返回 Resultset减少一次 Client DB Server 交互MySQL不支持returning语法28. 内部架构PGSQL多进程架构并发连接数不能太多跟Oracle一样既然跟Oracle一样那么很多优化方法也是相通的例如开启大页内存MySQL多线程架构虽然多线程架构但是官方有限制连接数原因是系统的并发度是有限的线程数太多反而系统的处理能力下降随着连接数上升反而性能下降一般同时只能处理200 ~300个数据库连接29. 聚集索引PGSQL不支持聚集索引PGSQL本身的MVCC的实现机制所导致MySQL支持聚集索引30. 空闲事务终结功能PGSQL通过设置 idle_in_transaction_session_timeout参数来终止空闲事务比如应用代码中忘记关闭已开启的事务PGSQL会自动查杀这种类型的会话事务MySQL不支持终止空闲事务功能31. 应付超大数据量PGSQL不能应付超大数据量由于PGSQL本身的MVCC设计问题需要垃圾回收只能期待后面的大版本做优化MySQL不能应付超大数据量MySQL自身架构的问题32. 分布式演进PGSQLHTAP数据库cockroachDB、腾讯Tbase分片集群 Postgres-XC、Postgres-XLMySQLHTAP数据库TiDB分片集群 各种各样的中间件不一一列举小结上面的对比表还不是很完善只有一些本人认为比较关键的特性拿出来对比总的来说MySQL因为需要支持更换存储引擎所以某些功能都要受制于存储引擎层例如物理复制而PGSQL不支持更换存储引擎(在PGSQL V12开始也支持可插拨的表存取接口)而且一直由官方统一开发和维护所以相对比较稳定功能也比较完善对得上它的称号《世界上功能最为强大的开源数据库》PGSQL V12 支持可插拨的表存取接口之后有可能由第三方存储引擎来改进PGSQL本身的MVCC实现机制而不需要等待官方去解决聚集索引、undo表空间这些都不再是问题如有不对的地方欢迎大家拍砖o(∩_∩)o本文版权归作者所有未经作者同意不得转载。