1 简介

因为公司使用PostgreSQL很长时间了,忙于功能开发未对其PostgreSQL的一些优劣势有所了解,因为开发代码的话使用mybatis感知不出底层使用的数据库,开发的代码也没有任何变化,所以没有深入了解其底层PostgreSQL,而过去一直使用mysql的话对于底层原理基本数值包括一系列算法。那么对于postgresql和mysql都是免费且功能强大的开源数据库,很多用户面对这两个库都会有一个问题,那就是哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?

2 postgresql比mysql强大在那些方面

● PostgreSQL 比MySQL更严格地遵守 SQL 标准。

● PostgreSQL 比 MySQL 更好地处理并发性:

Postgres 实现没有读锁的多版本并发控制 (MVCC)
Postgres 支持可以使用多个 CPU/内核的并行查询计划
Postgres 可以以非阻塞方式创建索引(通过 CREATE INDEX CONCURRENTLY 语法),它可以创建部分索引

● PostgreSQL 比MySQL具有更好的数据一致性

Mysql和Postgresql对编程语言的支持程语言的支持对比

PostgreSQL与MySQL优劣势是什么-LMLPHP

3 PostgreSQL 为什么在国内没有MySQL流行

对比最新版本的MySQL 和 PostgreSQL, PostgreSQL的性能实际上要更强大一些, 但之所以没有MySQL流行主要还是历史原因,说白了就是出来的晚,人家先用mysql的也不着急换

MySQL较易使用,可在Windows平台轻松安装。在早期,PostgreSQL并不提供Windows平台的版本,必须进行自行编译

● 学习MySQL更加容易, 开箱即用,以root用户连接非常简单, 但是配置PostgreSQL、创建用户等等操作比MySQL要复杂

● MySQL始终有公司背书,创建了社区和配套产品的生态系统,无论是在线文档,还是论坛都比Postgre SQL丰富

4 postgresql比mysql一些主要区别

● 数据类型:PostgreSQL支持更多的数据类型,例如数组,json,hstore等,而MySQL则支持空间数据类型(GIS)。

● 扩展性:PostgreSQL相比MySQL具有更强的扩展性,支持自定义数据类型,函数和存储过程等。它还提供了一些高级功能,如异步复制,流复制,热备等。

PostgreSQL的ACID(原子性、一致性、隔离性和持久性)兼容性更为严格。PostgreSQL默认使用更加严格的隔离级别,这能确保数据的一致性和完整性。MySQL默认使用更低的隔离级别。

● 性能:MySQL比PostgreSQL更适用于大型的数据集,因为它的性能更好,特别是在读写和并发方面。而PostgreSQL在处理复杂的查询和更大数据集方面的性能表现更优秀。

● 开源协议:MySQL的开源协议是GPL(通用公共许可证),这意味着对MySQL进行修改的衍生产品也必须使用同一协议进行发布。而PostgreSQL的开源协议是BSD,这意味着PostgreSQL可以被商业软件使用,并且修改后的代码可以私有化。

● 跨平台支持:MySQL支持更多的操作系统,如Windows,Linux,macOS,FreeBSD等。尽管PostgreSQL支持多种操作系统,但它最初的设计目标是运行在UNIX操作系统上。

总的来说,PG更适合复杂的数据结构、高级应用和大规模数据集,而MySQL更适合简单的Web应用和小规模数据集。这并不是一条绝对规则,因为两种数据库都适用于各种类型的应用程序。

5 postgresql比mysql特征比较

PostgreSQL与MySQL优劣势是什么-LMLPHP

5.1 MariaDB的主要特点

MariaDB具有使其成为出色数据库的多项功能,包括其广泛的存储引擎选择、线程池、SQL兼容性和并行查询执行。

以下是重点:

MariaDB的一个突出特点是可供选择的不同存储引擎。PBXT、XtraDB、Maria和FederatedX是一些可行的引擎选项,可以根据您的要求进行定制。InnoDB是其中一个通用存储引擎,以其高可靠性和高性能的平衡著称。

线程池:线程池是代表应用程序有效执行异步回调的工作线程的集合。当发出请求时,MariaDB可以简单地获取一个先前创建的线程,该线程已经在池中。使用该方案可以避免创建线程所需的时间,同时减少线程周期的开销,从而加快查询速度并更快地返回结果。

SQL兼容性: MariaDB通过客户端程序(例如mysqldump、mysqladmin)和插件(例如审计插件)提供对大多数SQL语句、变量、定义和函数的支持。MariaDB中的JSON函数、窗口函数和公用表表达式 (CTE)也可供开发人员利用。

虚拟列:对虚拟列的支持是MariaDB的主要特性之一,可用于在数据库级别执行计算。当多个App访问一列时,用户不必在每个App中单独编写计算;数据库代表他们执行此操作。
并行查询执行:从10.0版本开始,您可以同时执行多个查询而不会降低性能,从而加快任务执行速度。

5.2 PostgreSQL的主要特点

除了开源之外,PostgreSQL还拥有多种功能。分区、负载平衡和连接池都与PostgreSQL一起工作,使其在同时代产品中具有相当大的优势。

以下是PostgreSQL的一些显着特性的列表:

支持JSON数据:查询和存储JSON的能力使PostgreSQL也可以运行NoSQL工作负载。如果您正在设计一个数据库来存储来自多个传感器的数据,并且您不确定支持传感器所需的特定列,您可以构建一个表,其中一个列遵循JSON格式来存储不断变化或非结构化的数据。
强大的扩展: PostgreSQL拥有令人印象深刻的功能集,包括时间点恢复、多版本并发控制 (MVCC)、表空间、精细访问控制、预写日志记录和在线/热备份。PostgreSQL还可以区分大小写、排序和格式化。它在可以管理的数据量和可以容纳的同时用户数量方面都具有高度可扩展性。
数据更新:联合的多种形式,结合复制,为几乎任何类型的数据系统提供推送和拉取技术。这些可以组合成不同的配置来桥接数据库存储解决方案,而不需要ELT/ETL处理包。数据根本不会移出源系统,这意味着数据始终是最新的。
测试驱动开发: PostgreSQL遵循测试驱动开发,每个bug都经过测试,编写代码以满足测试。这些测试是集成的,因此错误不会在PostgreSQL的未来版本中再次出现。只有当所有回归测试用例都通过时,才会发布PostgreSQL的新更新。

以上就是PostgreSQL与MySQL优劣势是什么的详细内容,更多请关注Work网其它相关文章!

08-25 17:15