PostgreSQL与MySQL对比_乘舟御风的博客-CSDN博客


本站和网页 https://blog.csdn.net/tiandao2009/article/details/79839037 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

PostgreSQL与MySQL对比_乘舟御风的博客-CSDN博客
PostgreSQL与MySQL对比
乘舟御风
于 2018-04-07 09:46:29 发布
31018
收藏
52
文章标签:
PostgreSQL
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tiandao2009/article/details/79839037
版权
PostgreSQL与MySQL对比
都属于开放源码的一员,性能和功能都在高速地提高和增强。MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择。
PostgreSQL : 免费
原则: 对于一个数据库,稳定性和速度并不能代表一切。对于一个成熟的数据库,稳定性肯定会日益提供。而随着硬件性能的飞速提高,速度也不再是什么太大的问题。
1 架构对比
MySQL: 多线程
PostgreSQL: 多进程
多线程架构和多进程架构之间没有绝对的好坏,例如oracle在unix上是多进程架构,在windows上是多线程架构。
PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。
pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)
2 对存储过程[1]及事务的支持能力
1) MySQL对于无事务的MyISAM表,采用表锁定,一个长时间运行的查询很可能会长时间地阻碍对表的更新,而PostgreSQL不存在这样的问题。
2) PostgreSQL支持存储过程,要比MySQL好,具备本地缓存执行计划的能力;
3) MySQL 4.0.2-alpha开始支持事务的概念,保留无事务的表类型, 为用户提供了更多的选择。
3 稳定性及性能
1)高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)
2) PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。
3) mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分(需要根据内存情况合理配置)。从测试结果上看,mysql 5.5的性能提升很大,单机性能强于pgsql,5.6应该会强更多。
4 高可用性
MySQL可以适应24/7运行。在绝大多数情况下,你不需要为MySQL运行任何清除程序。PostgreSQL目前仍不完全适应24/7运行,这是因为你必须每隔一段时间运行一次VACUUM。
innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触 发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀;
5 数据同步方式:
1)mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。
2) mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制;pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。
3) MySQL的复制可以用多级从库,但是在9.2之前,PGSQL不能用从库带从库。
4) PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
7 权限控制对比
MySQL允许你定义一整套的不同的数据级、表级和列级的权限,允许你指定基于主机的权限;
MySQL的MERGE表提供了一个独特管理多个表的方法。myisampack可以对只读表进行压缩,此后仍然可以直接访问该表中的行。
7 SQL语句支持能力
1) PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数);
2) 支持用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持。腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL(听李元佳说过,但是没有验证过)。
3) pgsql对表名大小的处理,只有在SQL语句中,表名加双引号,才区分大小写。
4)在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;
5)对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;
6) MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束;
7) MySQL的Join操作的性能非常的差,只支持Nest Join,所以一旦数据量大,性能就非常的差。PostgreSQL除了支持nest join外,还支持hash join和 sort merge join;PostgreSQL支持正则表达式查找,MySQL不支持;
8 数据类型支持能力
PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展。
1) 有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型, 因此PG 多年来在 GIS 领域处于优势地位。相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON,其空间索引只能在存储引擎为MYISAM的表中创建,用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL。不同的存储引擎有差别。MyISAM和InnoDB都支持spatial extensions,但差别在于:如果使用MyISAM,可以建立spatial index,而InnoDB是不支持的。2) pgsql对json支持比较好,还有很逆天的fdw[2]功能,就是把别的数据库的表当自己的用;
3) pgsql的字段类型支持的多,有很多mysql没有的类型,但是实际中有时候用到。
4) 一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。
5) postgresql有grouping sets函数,也是迫使我抛弃mysql第一原因。做报表后台计算,olap/oltp之类的这个函数简直是刚性需求。没有grouping sets函数,我感觉做报表后台计算,简直惨不忍睹。当然pgsql还有挺多很好用的窗口函数之类,用起来真心爽。mysql做数据报表计算后台最大缺点就是没有grouping sets和一些窗口函数,替代方案很麻烦而且效率低,做很多统计数据各种表连接、外连接等等一大堆,不同数据库之间数据的利用计算。
8) PG支持R-trees这样可扩展的索引类型,可以更方便地处理一些特殊数据。
9)PG可以使用函数和条件索引,使得数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
9 入库过程容错能力
大批量数据入库,PostgresSQL要求所有数据必须完全满足要求,有一条错误,整个数据入库过程失败;MySQL无此问题。比如,每天1000万行数据,就因为一条打印的不完整,PostgreSQL会直接报错,导致一条也导入不进去。1000万里面有一行将数字类型的等级打印成了字符串的东西,那么pgsql会非让你找出这一条删掉,然后才能将剩下的数据导入进去。mysql就完全没有这个问题,比如mysql level字段定义的int类型,几千万中有一条数据没注意打印成字符串,mysql会自己给你转成0存储的,不会有任何报错。
10  表组织方式
1) pgsql用继承的方法实现分区表,让分区表的使用不方便且性能差,这点比不上mysql。
2) PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量;
3) MySQL分区表的实现要优于PG的基于继承表的分区实现,主要体现在分区个数达到上千上万后的处理性能差异较大。
11 开发接口
对于web应用来说,mysql 5.6 的内置MC API功能很好用,PGSQL差一些。
PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。
12 维护团队
MySQL的背后是一个成熟的商业公司,使得MySQL的开发过程更为慎重;
PostgreSQL的背后是一个庞大的志愿开发组, PostgreSQL的反应更为迅速。这样的两种背景直接导致了各自固有的优点和缺点。
[1]对于一个严肃的商业应用来说,事务的支持是不可或缺的。对于一个严肃的商业应用来说,作为数据库本身,有众多的商业逻辑的存在,此时使用存储过程可以在较少地增加数据库服务器的负担的前提下,对这样的商业逻辑进行封装,并可以利用数据库服务器本身的内在机制对存储过程的执行进行优化。此外存储过程的存在也避免了在网络上大量的原始的SQL语句的传输,这样的优势是显而易见的。
[2] 用统一的SQL,去访问其他关系数据库,其他NoSQL数据库,HBase,甚至是各种格式的文件,操作系统信息,在线数据集。
乘舟御风
关注
关注
点赞
52
收藏
打赏
评论
PostgreSQL与MySQL对比
PostgreSQL与MySQL对比都属于开放源码的一员,性能和功能都在高速地提高和增强。MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择。PostgreSQL : 免费原则: 对于一个数据库,稳定性和速度并不能代表一切。对于一个成熟的数据库,稳定性肯定会日益提供。而随着硬件性能的飞速提高,速...
复制链接
扫一扫
PostgreSQL与MySql比较
03-17
PostgreSQL与MySql比较
MySQL与PostgreSQL相比哪个更好?
程序猿开发日志【学习永无止境】
03-23
3万+
网上已经有很多拿PostgreSQL与MySQL比较的文章了,这篇文章只是对一些重要的信息进行下梳理。在开始分析前,先来看下这两张图:
MySQL
MySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQL AB开发的,然后在200
评论 3
您还未登录,请先
登录
后发表或查看评论
《MongoDB》MongoDB的简介与体系结构
最新发布
Oliver尹的博客
11-14
179
MongoDB 是一个 基于分布式文件存储的数据库。它具有开源、高性能、无模式等优点,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
PostgreSQL的几种分布式架构对比
数据库架构之美
12-28
1万+
Postgresql由于强大的功能和良好的扩展性,基于postgresql来做的分布式架构也比较多,大部分用于分析类场景,下面比较几种常见的架构特点。
Citus
Citus以插件的方式扩展到postgresql中,独立于postgresql内核,所以能很快的跟上pg主版本的更新,部署也比较简单,是现在非常流行的分布式方案。Citus在苏宁有大规模应用,微软也提供citus的商业支持。下面是cit...
PG Vs MySQL ,到底谁更强?
欢迎关注公众号:【码农突围】,公号后台回复9999,可以获取一份500页的LeetCode刷题笔记。
04-02
3860
点击上方“码农突围”,马上关注这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”作者丨郭庆慧来源丨东方龙马(ID:OLM-FWH)概述本文介绍MySQL和PostgreSQL的一些特性对比,让大家了解二者的优劣,更好的做出选择。当前国内的现状,互联网公司使用MySQL的较多,PostgreSQL的使用比例反而不高,但相信看到PG的...
MySQL和PgSQL的区别
热门推荐
Zuoerfeng
11-14
8万+
2018.6.11
1.问题
如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?
在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价...
pgsql和mysql哪个更早_pgsql与mysql有哪些区别
weixin_42403124的博客
01-18
183
pgsql与mysql有哪些区别发布时间:2020-09-16 14:40:50来源:亿速云阅读:124作者:小新这篇文章给大家分享的是有关pgsql与mysql有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。pgsql与mysql的区别有:在pgsql上的功能实现比mysql严谨,对表的连接支持更加完整;pgsql的优化器功能完整,支持索引类型多,而mysql...
postgresql和mysql之间比较
归来仍少年
03-18
5009
一、事务隔离之间的比较
事务隔离级别
postgresql
mysql
读未提交
无法读脏数据
读已提交
快照实现
快照实现
可重复读
有,无幻读,发生冲突时,牺牲其中一个事务
已实现,有幻读,悲观锁,因为Gap Lock问题,存在性能问题
可串行化
已实现,通过SSI实现,乐观锁,性能比较好
悲观锁,S2PL,性能不好,实用性比较差
二、持久化之间的比较
持久化技术
postgresql
mysql
事务的持久化
WAL日志
binlog和innodb的
pysql与mysql的区别_postgresql与mysql的区别是什么
weixin_27791839的博客
01-20
378
MySQL与PostGreSQL的区别一.PostgreSQL相对于MySQL的优势1、在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;2、存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;3、对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;4、PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。5、PG的主备...
MySQL和pgsql的区别
qq_57442639的博客
04-19
1303
1.问题
如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?
在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的。你希望一开始就选择正确。两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。对这两个开源数据库的
PostgreSQL和MySQL对比
qq_654603797
07-23
1万+
下面我将从以下几个方面阐述MySQL和PostgreSQL的异同和优劣:
开源性:
PostgreSQL:The world’s most advanced open source database。
开源协议:PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。
PG的开源协议特别灵活,任何公司的和个人都可以把PG作为一个产品销售,而不需要像MySQL那样必须修改大部分代码才可以作为公司的产品。
MySQL:World’s Mo..
Pgsql和MySql的对比
weixin_44117767的博客
05-26
2321
工作中用过这两个数据库,但都不是太深入,仅限于用而已,但给我留下的印象就是Pgsql更好些,因为这两个库我都遇到过数据丢失的问题,前者我通过网上方法加自己的判断有惊无险的恢复了,而后者搜索各种资料加问身边的专家都没办法。
刚网上搜了一下两者的区别,总体的感觉也是前者是最好的开源关系数据库,而后者是互联网行业应用最广泛的数据库, 可能应用等多发现的坑也多,网上相关资料也多。如果让我个人选没特殊要求情况下会选前者。
关于两个的区别可以看知乎上相关问题,回答很精彩,
其中一个如下。
一、 PostgreSQL
Postgresql与MySQL 对比
kwame211的博客
06-25
386
当我们去选择项目使用的数据库的时候,应该要考虑该项目的应用场景、数据规模等因素。每一种数据库都有它特定的应用场景,比如我们现在要讨论的Postgresql和MySQL数据库,这两种的数据库的应用场景就有所不同,下面我们就它们的相同点和不同点进行讨论。
PostgreSQL vs. MySQL
2.Postgresql vs MySQL
此表来源于postgresqltutorial,详细区别了两者的不同点。
特性
Postgresql
MySQL
描述
Th...
MySQL与PostgreSQL比较,哪个更好、我们该选用哪个?
02-14
1180
点击上方“码农突围”,马上关注
这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”
作者:祚儿疯blog.csdn.net/u012414189/...
客观公正地评价MySQL和PostgreSQL的优劣
站长生活
11-28
3321
一、前言 前一段时间,我曾经翻译过一篇将你的网站从MySQL改为PostgreSQL,其实当初我更感兴趣的是一个应用程序的后台数据库从MySQL转为PostgreSQL的具体操作,并没有关心MySQL和PostgreSQL的优劣,没想到反应出乎意料的大,因此我也就觉得有写这篇文章的必要了。 在这篇文章中,我们选用MySQL 4.0.2-alpha与PostgreSQL 7.2进行比较,因为MySQ
PgSQL基础之 pgsql与mysql的简单区别
weixin_34290096的博客
10-31
603
1、支持的booloan类型的值
  mysql并不支持boolean类型,即便当我们创建了boolean的字段属性之后,mysql会自动将其转化为tinyint(1)类型。当插入“true”的时候,其值自动转化为1。当插入"false"的时候,其值自动转化为0。使用select进行取值的时候,我们搜索出来的也是0和1。而pgsql是支持boolean的,所以我们可以插入“true”和“fals...
PgSql使用技巧总结 PgSql和MySql的对比
王中阳的博客
09-30
849
PgSQL 有 `SEQUENCE` 的概念,它不能像MySQL一样设置主键id自增就可以了,PgSQL 在我们创建新表的时候要给主键创建 `SEQUENCE`。
PostgreSQL 与 MySQL:有什么区别?
Hornsey的博客
02-13
1万+
PostgreSQL 和 MySQL 在用途、好处、特性和特点上的异同
PostgreSQL 和 MySQL 是将数据组织成表的关系数据库。这些表可以根据每个表共有的数据链接或关联。关系数据库使您的企业能够更好地了解可用数据之间的关系,并帮助获得新的见解以做出更好的决策或发现新的机会。
PostgreSQL 和 MySQL 有何相似之处?
PostgreSQL 和 MySQL 都依赖于 SQL(结构化查询语言),这是与管理系统交互的标准语言。SQL 允许使用具有简单结构的几行源代码连接表,大多数非技术员工可
【数据库】Postgresql 与 MySQL 比较
wangdong的博客
10-28
427
Postgresql 与 MySQL 异同比较,结合两者底层存储引擎及面向开发使用等方面进行对比......
Postgresql和Mysql的区别
MrHuang
04-12
5626
一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:编程工作室
设计师:CSDN官方博客
返回首页
乘舟御风
CSDN认证博客专家
CSDN认证企业博客
码龄12年
暂无认证
44
原创
14万+
周排名
3万+
总排名
25万+
访问
等级
1840
积分
25
粉丝
47
获赞
18
评论
184
收藏
私信
关注
热门文章
git在Commit时提示“Changes not staged”解决办法
66265
PostgreSQL与MySQL对比
31017
SQLServer中创建主键的方法
29657
SQLServer查看正在执行的SQL语句的方法
18670
SQLServer占用内存过大问题解决方案
18339
最新评论
git在Commit时提示“Changes not staged”解决办法
Adam`南帝·梁:
谢谢
VS常用快捷键
young_always:
good
using namespace使用相关问题
Tisfy:
写得太好了!正如那:草木也知愁,韶华竟白头。
“使用比创建其他对象所用编译器旧的编译器创建的;请重新生成旧的对象和库”的解决方案
huoxingd:
完整的复制粘贴
PostgreSQL与MySQL对比
孤傲小二~阿沐:
是的 我也是刚接触pg
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
创建虚拟python开发环境
using namespace使用相关问题
编译错误问题解决
2022年1篇
2018年45篇
2016年1篇
目录
目录
最新文章
创建虚拟python开发环境
using namespace使用相关问题
编译错误问题解决
2022年1篇
2018年45篇
2016年1篇
目录
评论 3
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
乘舟御风
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值