postgresql和mysql都是免费且功能强大的开源数据库,很多用户面对这两个库都会有一个问题,那就是哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?
一.PostgreSQL相对于MySQL的优势
1、在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;
2、存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;
3、对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;
4、postgresql主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。
5、postgresql的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
6、MySQL的存储引擎插件化机制,存在锁机制复杂影响并发的问题,而postgresql不存在。
二、MySQL相对于PostgreSQL的优势:
1、innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀;
2、MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束;
3、MySQL的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作;
4、MySQL分区表的实现要优于PG的基于继承表的分区实现,主要体现在分区个数达到上千上万后的处理性能差异较大。
5、MySQL的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了innodb适合事务处理场景外,myisam适合静态数据的查询场景。
三、结论
总的来说,开源数据库都还不是很完善,和这两者相比,商业数据库oracle无论在架构还是功能方面都要完善很多。
postgresql和mysql相比,postgresql更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而MySQL则是更加适合业务逻辑相对简单、对数据可靠性要求比较低的互联网场景(比如google、facebook、alibaba)。
相关阅读:
数据库入门级开发教程
MySQL数据库笔记
SQL WHERE 子句WHERE 子句用于过滤记录。SQL WHERE 子句 WHERE 子句用于提取那些满足指定标准的记录。 SQL WHER...
SQL CREATE TABLE 语句SQL CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表。 表由行和列组成,每个表都必须有个表名...
SQL NOT NULL 约束在默认的情况下,表的列接受 NULL 值。SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值。 NOT NULL 约束...
SQL FULL OUTER JOIN 关键字SQL FULL OUTER JOIN 关键字 FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表...
SQL 用于各种数据库的数据类型 Microsoft Access、MySQL 和 SQL Server 所使用的数据类型和范围。Microsoft Access 数据类型 数...
SQL FORMAT() 函数FORMAT() 函数 FORMAT() 函数用于对字段的显示进行格式化。 SQL FORMAT() 语法SELECT FORMAT(column_name,...
SQL Server GETDATE() 函数 SQL Server Date 函数定义和用法 GETDATE() 函数从 SQL Server 返回当前的日期和时间。 语法GETDATE(...
SQL 撤销索引、撤销表以及撤销数据库 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。DROP INDEX 语句 DROP INDEX 语句用...
SQL AVG() 函数AVG() 函数 AVG() 函数返回数值列的平均值。 SQL AVG() 语法SELECT AVG(column_name) FROM table_name演示数...