《postgresql与mysql》要点:
本文介绍了postgresql与mysql,希望对您有用。如果有疑问,可以联系我们。
因为真的很难去说postgresql与mysql谁好谁坏.就浅藏辄止的来了解一下这两种数据库的相同点和分歧点.
相同点:
开源数据库
关系型数据库
PG和MySQL在大数据表时,更新操作性能都会急剧下降;
分歧点:
进程模式与线程模式:postgresql为进程模式,和oracle同为进程模式,而mysql为线程模式.在不同线程之间的环境转换和拜访公用的存储区域显然要比在不同的进程之间要快得多;但是进程模式对多CPU利用率比较高.进程模式共享数据需要用到共享内存,而线程模式数据本身就是在进程空间内都是共享的,不同线程拜访只需要控制好线程之间的同步
SQL标准上:在SQL的标准实现上要比MySQL完善,而且功能实现比拟严谨;
PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小;
MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、编削操作,但是对表结构设计存在约束;而PG可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要.
任何系统都有它的性能极限,在高并发读写,负载切近亲近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑.
数据库的可靠性:PostgreSQL 的稳定性极强, Innodb 等引擎在瓦解、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些.
PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,好比分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好.这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL.
PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多.
PG的可靠性高,对数据的掩护性也比较高,不会陷入到厂商的利益圈套中,而随着sun被oracle收购,mysql和oracle的市场份额也不好说.
PostgreSQL 的确还欠缺一些比拟高端的数据库管理系统需要的特性,比如数据库集群,更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等
另外,mysql号称是开源数据库中most popular,而pg而号称是开源数据库中most advanced,所以关于mysql和pg谁好谁坏还欠好说.
但是从我使用的角度来说,的确pg在大数据量是读写的性能的确要比mysql强大一些,而且在条件中可以加入到正则匹配,还支持临时表,这个我觉得还挺有用,在语法上很像sql,但是又要灵活很多,但是好像PG的delete和update操作应该作了特殊优化,性能不是很稳定.
另外pg并不是传统的sql数据库,它可以存储array 和 json, 可以在 array 和 json 上建索引, 甚至还能用表达式索引. 为了实现文档数据库的功能, 设计了 jsonb 的存储布局,pg的jsonb 的性能已经优于 MongoDB的BSON.
欢迎参与《postgresql与mysql》讨论,分享您的想法,维易PHP学院为您提供专业教程。