SQL兼容性

PostgreSQL 9.5兼容 SQL:2011 子集http://www.postgresql.org/docs/9.5/static/features-sql-standard.htmlMySQL 5.7兼容 SQL:1999 子集

功能差异 - 高级SQL

递归查询, connect by, 树形查询  PostgreSQL 通过(with 或 tablefunc支持)支持,MySQL 不支持例子https://yq.aliyun.com/articles/240http://www.postgresql.org/docs/9.5/static/tablefunc.html
窗口查询, window over PostgreSQL 支持,MySQL 不支持例子http://blog.163.com/digoal@126/blog/static/16387704020137154137930http://blog.163.com/digoal@126/blog/static/16387704020121024102312302/http://blog.163.com/digoal@126/blog/static/16387704020124239390354/ http://www.postgresql.org/docs/9.5/static/functions-window.html rollup, grouping sets, cube PostgreSQL 支持,MySQL 不支持 例子 http://www.postgresql.org/docs/9.5/static/queries-table-expressions.html#QUERIES-GROUPING-SETS http://blog.163.com/digoal@126/blog/static/16387704020154269591874/ 高级聚合(json,数组,相关性,标准差(采样,全局),截距,斜率,方差(采样,全局),mode,percentile_cont,distc,rank,dense_rank,percent_rank,cume_dist,grouping) PostgreSQL 支持,MySQL 不支持 例子 http://www.postgresql.org/docs/9.5/static/functions-aggregate.html http://blog.163.com/digoal@126/blog/static/1638770402015224124337/ http://blog.163.com/digoal@126/blog/static/1638770402015379286873/ http://blog.163.com/digoal@126/blog/static/16387704020153713222764 hash join PostgreSQL 支持,MySQL 不支持 merge join PostgreSQL 支持,MySQL 不支持 nestloop join 都支持 例子 http://www.postgresql.org/docs/9.5/static/xoper-optimization.html http://www.postgresql.org/docs/9.5/static/planner-optimizer.html 哈希聚合 PostgreSQL 支持, MySQL 不支持 例子 http://www.postgresql.org/docs/9.5/static/runtime-config-query.html#RUNTIME-CONFIG-QUERY-ENABLE 事务间共享事务快照 PostgreSQL 支持,MySQL 不支持 例子 http://www.postgresql.org/docs/9.5/static/functions-admin.html#FUNCTIONS-SNAPSHOT-SYNCHRONIZATION http://www.postgresql.org/docs/9.5/static/sql-set-transaction.html http://www.postgresql.org/docs/9.5/static/app-pgdump.html http://blog.163.com/digoal@126/blog/static/163877040201326829943/ http://blog.163.com/digoal@126/blog/static/163877040201241134721101/ 

功能差异 - 约束

foreign keyPostgreSQL 支持, MySQL 仅 innodb 引擎支持FK例子http://www.postgresql.org/docs/9.5/static/ddl-constraints.html
for no key update, for key share 粒度锁PostgreSQL 支持, MySQL 不支持例子http://www.postgresql.org/docs/9.5/static/explicit-locking.html#LOCKING-ROWShttp://blog.163.com/digoal@126/blog/static/16387704020130249109133/ http://blog.163.com/digoal@126/blog/static/16387704020130305109687/ check 约束 PostgreSQL 支持, MySQL不支持(仅支持语法,实际不生效,不严谨) 例子 http://www.postgresql.org/docs/9.5/static/ddl-constraints.html exclusion 约束 PostgreSQL 支持, MySQL不支持 例子 http://www.postgresql.org/docs/9.5/static/ddl-constraints.html 

功能差异 - 易用性

表空间都支持
alter 列值转表达式(alter table alter column c1 type newtype using (expression(...)) )PostgreSQL 支持, MySQL 不支持例子http://www.postgresql.org/docs/9.5/static/sql-altertable.html https://yq.aliyun.com/articles/30470 alter table 需要重组表的操作 MySQL ( innodb ) optimize table, 添加列,删除列, 重排, 修改row_format, key_block_size, mark column null, not null, 修改字段长度, 修改字段数据类型, 添加主键, 删除主键, 转换字符集, 指定字符集, rebuild table http://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html PostgreSQL vacuum full, cluster, 修改字段数据类型, (修改长度不需要重组表) http://www.postgresql.org/docs/9.5/static/sql-altertable.html 分区表 都支持 PostgreSQL 通过继承支持分区表, 阿里RDS PostgreSQL支持分区表语法 例子 http://www.postgresql.org/docs/9.5/static/ddl-partitioning.html https://yq.aliyun.com/articles/113 物化视图 PostgreSQL 支持, MySQL 暂不支持 例子 http://www.postgresql.org/docs/9.5/static/sql-creatematerializedview.html 物化视图增量刷新 PostgreSQL 支持, MySQL 暂不支持 例子 http://www.postgresql.org/docs/9.5/static/sql-refreshmaterializedview.html 表继承关系 PostgreSQL 支持, MySQL 暂不支持 例子 http://www.postgresql.org/docs/9.5/static/tutorial-inheritance.html 使用 like 建结构类似的表 PostgreSQL 支持, MySQL 暂不支持 例子 http://www.postgresql.org/docs/9.5/static/sql-createtable.html 

功能差异 - 开发功能

客户端开发语言支持C, java, python, ...
函数void, 单行,SRF,事件触发器(MySQL 不支持),触发器例子http://blog.163.com/digoal@126/blog/static/16387704020132131361949/ http://www.postgresql.org/docs/9.5/static/event-triggers.html
2PCPostgreSQL 支持, MySQL 仅innodb支持
服务端绑定变量PostgreSQL 支持, MySQL 不支持例子http://www.postgresql.org/docs/9.5/static/sql-prepare.html savepoint PostgreSQL 支持, MySQL 仅innodb支持 异步消息 PostgreSQL 支持, MySQL 不支持 例子 http://www.postgresql.org/docs/9.5/static/sql-notify.html http://www.postgresql.org/docs/9.5/static/sql-listen.html 游标 都支持 数组FOR循环,query FOR循环,游标FOR循环 PostgreSQL 全支持 例子 http://www.postgresql.org/docs/9.5/static/plpgsql-control-structures.html http://www.postgresql.org/docs/9.5/static/plpgsql-cursors.html MySQL 不支持数组

功能差异 - 类型支持

数据类型PostgreSQL 高精度numeric, 浮点, 自增序列,货币,字节流,时间,日期,时间戳,布尔,枚举,平面几何,立体几何,多维几何,地球,PostGIS,网络,比特流,全文检索,UUID,XML,JSON,数组,复合类型,域类型,范围,树类型,化学类型,基因序列,FDW, 大对象MySQL数字,时间,字符串,简单的GIS,JSON
支持索引的数据类型PostgreSQL 高精度numeric, 浮点, 自增序列,货币,字节流,时间,日期,时间戳,布尔,枚举,平面几何,立体几何,多维几何,地球,PostGIS,网络,比特流,全文检索,UUID,XML,JSON,数组,复合类型,域类型,范围,树类型,化学,基因序列MySQL 数字,字符串,比特流,时间,全文检索,GIS

功能差异 - 索引支持

索引方法PostgreSQL 支持 btree, hash, gist, sp-gist, gin, brin 索引MySQL 支持 btree, gis类型索引
规则表达式匹配,支持索引检索PostgreSQL 支持MySQL 不支持
数组支持索引PostgreSQL 支持,MySQL不支持数组
全文检索支持索引都支持
索引扩展功能PostgreSQL 支持 表达式索引,部分索引,联合索引MySQL 支持 联合索引
自定义索引方法PostgreSQL支持MySQL 不支持

功能差异 - 并发能力

隔离级别PostgreSQL 支持 RC, RR, 以及高于SQL 92标准的串行隔离级别MySQL 支持 RU,RC,RR,以及SQL 92标准的串行隔离级别
slave库支持RR隔离级别查询都支持
锁粒度PostgreSQL 支持 行锁,对象锁,页锁,预锁,应用锁,自旋锁,共享锁,排它锁MySQL 不支持 应用锁,预锁
死锁检测都支持
skip locked, nowaitPostgreSQL 都支持MySQL 不支持, 阿里云RDS MySQL 支持nowait

功能差异 - 多引擎和外部源支持

多引擎支持PostgreSQL内置heap, 通过插件实现内存表, 列存储, 压缩存储, 流式存储, 非关系存储等。MySQLMyISAM, innodb, ...
外部表PostgreSQL支持任意外部数据源, (例如jdbc, file, odbc, oracle, mysql, db2, redis, mongo, ES, hadoop......)MySQL 仅支持csv文件外部表
dblinkPostgreSQL 支持, MySQL 暂不支持
内存表都支持, (PostgreSQL 通过外部表支持)
ES 引擎PostgreSQL 支持MySQL 不支持

功能差异 - 安全

数据加密PostgreSQL 支持加密数据类型,可选GPG加密算法 MySQL 需要通过其他手段达到目的
认证方法PostgreSQL 支持 密码、LDAP、AD、GSSAPI、SSPI、Ident、Peer、RADIUS、PAM、签名认证MySQL 支持 密码 认证
数据传输加密都支持
行安全策略PostgreSQL 支持, MySQL 暂不支持
数据库内部支持libselinux接口, (美国国家安全局制定的安全加强标准) PostgreSQL 支持, MySQL 暂不支持

功能差异 - 优化器

http://www.postgresql.org/docs/9.5/static/runtime-config-query.html
GPU 并行计算支持PostgreSQL 支持, MySQL 不支持
遗传优化器算法PostgreSQL 支持CBO、CRO、遗传算法MySQL 支持CBO、CRO
HINT PLAN都支持
CPU 并行计算PostgreSQL 9.6支持(线性性能提升)MySQL 不支持
自定义成本因子PostgreSQL 支持MySQL 不支持

功能差异 - 可用性和可靠性

多master都支持
逻辑复制都支持
物理复制PostgreSQL 支持, MySQL 不支持
级联复制都支持
同步复制都支持
pasox,设置保护级别PostgreSQL 9.6 支持MySQL 不支持
主备延迟PostgreSQL 不受事务大小限制, 几乎没有延迟(ms以内)MySQL延迟和事务大小相关, 长事务会导致巨大主备延迟
在线备份, 增量备份都支持
基于REDO的数据库回滚,修复主备时间线错乱PostgreSQL 支持, MySQL不支持
任意时间点恢复(事务粒度)都支持, MySQL 需要用户自己写程序来支持

功能差异 - 编程扩展能力

是否支持采样查询PostgreSQL 支持, MySQL不支持
是否支持扩展采样算法PostgreSQL 支持, MySQL不支持
自定义数据类型PostgreSQL 支持, MySQL 不支持
自定义索引方法PostgreSQL 支持, MySQL 不支持
字符集自动转换, C扩展接口PostgreSQL 支持, MySQL 不支持
自定义聚合PostgreSQL 支持, MySQL 不支持
自定义窗口PostgreSQL 支持, MySQL 不支持

功能差异 - 管理特性

JOB 支持都支持
支持数据缓存快照和预热PostgreSQL 支持, MySQL不支持
支持数据文件块级别fadvise flag设置PostgreSQL 支持, MySQL不支持
性能诊断方法PostgreSQLexplain (analyze, verbose, costs, timing, buffers)IO Timeprofileprobeauto_explainMySQLexplain
角色权限继承PostgreSQL 支持, MySQL 暂不支持

性能差异

TPC-H(OLAP), 复杂查询 PostgreSQL 优势非常明显PostgreSQL 9.6 支持CPU并行PostgreSQL 支持GPU插件加速PostgreSQL rewrite能力更强PostgreSQL 支持hash join, hash agg, merge joinPostgreSQL btree,hash,gin,gist,sp-gist,brin索引方法
TPC-C(OLTP)  请自行测试
TPC-B请自行测试秒杀,模糊查询,地理位置信息查询,范围查询,实时流式计算,批量入库等场景 PostgreSQL 优势非常明显

以下无法给出客观意见,请自行测试,或者下载源码欣赏。

  稳定性可靠性代码成熟度

平台兼容性

  都很棒

服务端编程语言

函数(过程)语言PostgreSQLplpgsql, sql, c, c++, java, javascript, R, python, perl, php, tcl, ruby, lua, julia, ...MySQLsql, 不支持其他扩展编程语言

扩展能力

类型扩展,操作符扩展,函数扩展,索引方法扩展,索引扩展, PostgreSQL 支持, MySQL不支持
C触发器函数, C事件触发器函数PostgreSQL 支持, MySQL不支持
函数语言扩展PostgreSQL 支持扩展函数支持接口, erlang, .... MySQL 不支持
机器学习库PostgreSQL 支持, MySQL 不支持
流式计算PostgreSQL 支持, MySQL 不支持

scale up 能力

PostgreSQL 资源管控能力强。单实例可以充分发挥HPC的性能,有多少资源就能使用多少资源。支持GPU并行计算支持CPU并行计算
MySQL请自行测试

scale out 能力

都支持sharding
PostgreSQLpg_shard, oneproxy, plproxy, pg-xc, pg-xl, PostgreSQL 9.6 FDW based shard# 应用场景
PostgreSQL几乎适合任何场景
MySQL适合相对较简单的应用场景

社区状态

PostgreSQL单一开源分支,社区力量较集中。全球有1000名以上的内核研发人员。社区研发由核心组员和committer组成,持续5年以上对社区版本有贡献内核研发人员超过50位。社区核心人员分别来自数据库厂商,数据库支持和服务公司,数据库最终用户的公司,形成了一个非常好的力量均衡。
MySQL分支非常多, 引擎非常多。

社区活跃度

PostgreSQL非常活跃
MySQL非常活跃

生态

DBAPostgreSQL,国内供不应求
内核研发PostgreSQL,国内超过100名内核研发,依旧供不应求
应用开发PostgreSQL,SQL兼容性强,开发人员通用MySQL,SQL兼容性较弱,企业应用开发人员难接受
客户端驱动PostgreSQL,兼容性强MySQL,兼容性强
开发框架PostgreSQL,兼容性非常好,有一些非常特殊的开发框架(如IOT,化学,医疗,基因库,GIS...)MySQL,兼容性好
服务端编程语言PostgreSQL,扩展能力极强,支持各种服务端编程语言MySQL,不支持扩展软件开发商数量,不相上下
软件厂商覆盖面 ,不相上下
培训公司PostgreSQL,国内较少,国外较多
软件外包公司
技术支持公司PostgreSQL ,国内较少,国外较多
数据库厂商PostgreSQL,国内外都非常多(BSD许可的原因)MySQL,非常少
用户量PostgreSQL,国内企业用户偏多,互联网行业偏少,国外都较多
用户覆盖面,PostgreSQL,覆盖几乎各个行业的核心系统MySQL,互联网较多,企业周边系统较多
高校PostgreSQL,教育资源丰富

应用案例

PostgreSQL生物制药 {Affymetrix(基因芯片), 美国化学协会, gene(结构生物学应用案例), …}电子商务 { CD BABY,  etsy(与淘宝类似), whitepages, flightstats, Endpoint Corporation, 阿里巴巴 …}学校 {加州大学伯克利分校, 哈佛大学互联网与社会中心, .LRN, 莫斯科国立大学, 悉尼大学, 武汉大学, 人民大学, 上海交大, 华东师范 …}金融 {Journyx, LLC, trusecommerce(类似支付宝), 日本证券交易交所, 邮储银行, 同花顺, 平安银行…}游戏 {MobyGames, 斯凯网络 …}政府 {美国国家气象局, 印度国家物理实验室, 联合国儿童基金, 美国疾病控制和预防中心, 美国国务院, 俄罗斯杜马, 国家电网, 12306…}医疗 {calorieking, 开源电子病历项目, shannon医学中心, …}制造业 {Exoteric Networks, 丰田, 捷豹路虎}媒体 {IMDB.com, 美国华盛顿邮报国会投票数据库, MacWorld, 绿色和平组织, …}开源项目 {Bricolage, Debian, FreshPorts, FLPR, PostGIS, SourceForge, OpenACS, Gforge, …}零售 {ADP, CTC, Safeway, Tsutaya, Rockport, …}科技 {Sony, MySpace, Yahoo, Afilias, APPLE, 富士通, Omniti, Red Hat, Sirius IT, SUN, 国际空间站, Instagram, Disqus, 去哪儿, 腾讯, 华为, 中兴, 云游, 智联招聘, 高德地图 …}通信 {Cisco, Juniper, NTT(日本电信), 德国电信, Optus, Skype, Tlestra(澳洲电讯), 中国移动…}物流 {SF}目前国内较大规模应用PG的企业平安科技、邮储银行、高德、去哪儿、腾讯、阿里、华为、斯凯、通策医疗、云游、探探科技国家电网、XX铁路、xx保险、XX运营商、XXOA办公、同花顺、中航

发展潜力

PostgreSQLSQL兼容性强,功能强大,稳定性好,性能优越,扩展能力强,社区活跃,几乎覆盖全世界所有行业。国外生态已形成,国内正逐渐成为数据库焦点,伴随IOT和工业4.0的发展,redis+mongo+postgresql+仓储分析系统,能覆盖几乎所有应用场景的需求,发展潜力巨大。

学习成本

PostgreSQL文档完备脉络清晰,代码注释完备,认真学习非常容易达到较高的水平。PostgreSQL功能非常强大,与Oracle旗鼓相当,初期学习成本会较高,但是学成之后,会有一种与之融为一体的感觉,使用起来得心应手。可以大大降低使用成本,管理成本和风险。

开发成本

PostgreSQLSQL兼容性好,功能强大,扩展能力强,服务端编程能力强。数据库端可以解决非常多的程序需求,不需要move data,开发成本低。

开源许可

PostgreSQLBSD许可,允许任意形式分发和使用
MySQLGPL许可,商用软件分发必须开源

本文转自:https://yq.aliyun.com/ask/19599?spm=a2c4e.11155435.0.0.49f26596BoyotH

postgre与mysql区别相关推荐

  1. mongodb 持久化 mysql_(转)mongodb与mysql区别

    mongodb与mysql区别 MySQL是关系型数据库. 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,m ...

  2. 【备忘】es统计用户留存数据,公式都一样,语句和mysql区别很大

    //es统计用户留存数据,公式都一样,语句和mysql区别很大 {"query": {"bool": {"must": [{"ra ...

  3. 开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表

    开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表

  4. gbase数据库是什么?gbase数据库与MySQL区别

    gbase数据库和MySQL数据库都是比较常见的数据库管理系统,二者在功能上有点类似,但是具体使用范围有些差异.gbase数据库是什么?gbase数据库与MySQL区别有什么?下面小编就来给大家详细介 ...

  5. MS SQL Server和MySQL区别

    - 最近在做MS SQL Server转换成MySQL的工作,总结了点经验,跟大家分享一下.同时这些也会在不断更新.也希望大家补充. 1 MySQL支持enum,和set类型,SQL Server不支 ...

  6. mysql $区别_mysql 与oracle区别

    http://blog.csdn.net/huanghm88/article/details/8009048 本章来源 http://www.jb51.net/article/34414.htm 其他 ...

  7. php中关于mysqli和mysql区别

    一: PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,就 Extension ...

  8. mysql与ms sql server_MS SQL Server和MySQL区别

    1 MySQL支持enum,和set类型,SQL Server不支持 2 MySQL不支持nchar,nvarchar,ntext类型 3 MySQL的递增语句是AUTO_INCREMENT,而MS ...

  9. mysqli mysql的区别_phpmysqli和mysql区别详解

    本文介绍下,php中有关mysqli与mysql类的一些区别,有需要的朋友,可以作个参考哦. 一,PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MyS ...

最新文章

  1. MapReduce编程实例之自定义排序
  2. Linux防止SSH暴力破解
  3. postmessage 游戏窗口内无效_前端的微前端在交通项目内的应用实践
  4. 算法专题 普及组【2008】三3 C++版
  5. 层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB
  6. 前端学习:Vue.js基本使用
  7. cairo填充_Cairo 图形指南 (5) —— 形状与填充
  8. dnn学习:数据访问(1)
  9. JSP自定义标签_通过属性控制标签体的执行次数
  10. 《英雄联盟》设计师NORMAN的游戏设计之路
  11. react中对象扩展运算符使用问题
  12. 小米终于开始对外输出了!
  13. DEM高程数据获取方法
  14. QQ浏览器,正式推出,9.0版本又多些好东西!
  15. 1288元,苍井空“空系列”内衣微博开卖
  16. python SMTP发送带图片的邮件时,报TypeError: Could not guess image MIME subtype错误的解决办法
  17. 【C++】「一本通 1.1 练习 4」家庭作业
  18. Proteus仿真过程中External model DLL “***.DLL” not found
  19. 【武器系统】【2008.06】海军巡航导弹的制导与控制
  20. 【词汇辨析】Primary, main, prime and major “主要的、首要的”

热门文章

  1. 芯烨网口打印机用安卓手机端修改IP
  2. 迅为iTOP-3568开发板安装 RKNN Toolkit Lite2
  3. 【s32k】s32k14x系列(1)——开发环境搭建
  4. 计算机主机与外存不匹配,初级会计电算化全真模拟试卷.pdf
  5. 【夜曲编程Python数据分析】百题斩最后一题!!
  6. Jsp+Servlet+JavaBean实现最基本的注册登陆功能
  7. 协同管理软件方面的一些文章
  8. 职场人生:一个7年老员工的离职总结:如何打造一个最强大的“自我”
  9. 【报告分享】2020年淘宝直播数据分析报告-知瓜数据(附下载)
  10. java基础篇18-网络编程的常识和基于TCP协议的编程模型