PostgreSQL与MySQL优劣势比较浅谈

news2024/9/21 20:52:46

目录

  • 1 简介
  • 2 postgresql比mysql强大在那些方面
  • 3 PostgreSQL 为什么在国内没有MySQL流行
  • 4 postgresql比mysql一些主要区别
  • 5 postgresql比mysql特征比较
    • 5.1 MariaDB的主要特点
    • 5.2 PostgreSQL的主要特点
  • 6 总结


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对编程语言的支持程语言的支持对比
在这里插入图片描述

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具有更强的扩展性,支持自定义数据类型,函数和存储过程等。它还提供了一些高级功能,如异步复制,流复制,热备等。

● ACID: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特征比较

在这里插入图片描述

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的新更新。

6 总结

暂时先总结这么多我能知道的,之后的话遇到一些瓶颈再去思考,因为pgsql对于纯开发者来说没有什么学习成本的预算会一种sql就会用。两种最广泛使用的关系型数据库管理系统 PostgreSQL和MySQL既有相似之处,也有不同之处。如果你需要一个用于Web应用程序的,高安全性的关系型数据库管理系统,或者想要构建一个活跃用户超过数百万的面向消费者的app,那么MySQL将适合您的项目。如果你的需求围绕复杂的程序,复杂的设计,集成和数据完整性、事务支持,而不是在高速,那么,PostgreSQL将会是你项目理想的选择。不过国内MySQL占据着主流,社区里关于MySQL的优化和案例很多,PostgreSQL就很少,如果有PostgreSQL的小伙伴可以来分享一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431889.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉-角点检测

角点检测 1.分别实现Harris角点检测与SIFT特征提取,对比两者的区别1.1代码实现1.2两者区别 2.利用SIFT算法实现两幅相近图像的特征匹配2.1代码实现 3.实现匹配地理标记图像3.1代码实现 4.实验注意事项4.1实验需要安装的库和应用4.2报错内容 5.小结 1.分别实现Harris…

cdr文件怎么转化成ai文件 CDR文件转AI文件大小会变化吗

cdr与AI软件都可以用于制作矢量图形。基于不同的打印与使用需求,可能需要将cdr文件保存为ai文件使用。那么,cdr文件怎么转化成ai文件,CDR文件转AI文件大小会变化吗?下面让我们来详细解读一下吧。 一、cdr文件怎么转化成ai文件 c…

实验7 回归问题

1. 实验目的 ①掌握一元线性回归模型的实现方法; ②掌握多元线性回归模型的实现方法; ③掌握三维数据可视化方法。 2. 实验内容 ①使用TensorFlow建立一元线性回归模型,使用商品房销售数据训练模型,并使用训练好的模型预测房价…

【C++】17.map和set的模拟实现

1.红黑树中的迭代器 operator是关键 迭代需要走中序 如何走中序? _node从左子树的最左结点开始遍历走中序 分两类情况: 如果右树不为空 那么中序的下一个就是右子树的最左结点 如果右树为空 那么表示_node所在的子树已经完成 在一个结点的祖先去找 沿着路径往上孩子是它的…

【Linux】网络基础(网络层与链路层)

网络层与链路层典型协议网络层IP 地址地址管理网络号的划分(五种)特殊的网络以及IP地址路由选择链路层MAC 地址ARP 协议MTU 最大传输单元其他典型协议:ICMP、DNS 、NAT技术ICMP协议DNS 协议NAT & NAPT 技术代理网络层 功能:负…

算法设计与分析阶段考总结

前言:基本是为了我自己看的一些我容易忘记的东西,为考试作准备把 第一章 算法中的基本概念 程序设计数据结构算法 算法特性 1.有穷性 2.确定性 3.可行性 4.输出 5.输入 算法复杂性分析 算法复杂性依赖于:问题规模N,输入I&#xff…

TCP 的可靠传输

目录 可靠传输有啥用确认应答超时重传总结 可靠传输有啥用 我们知道相比于 UDP, TCP 的传输是可靠的, 啥意思呢? 就是 UDP 发送的数据, 它自己不知道发送的数据对方是否接收到. 而 TCP 发送的数据, 它知道对方是否接收到, 也就是说对方会给个应答. 假设一个场景 : 甲要付款给…

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 接口关联 接口关联…

Vector - CAPL - CAN x 总线信息获取(续1)

继续.... 目录 OverLoadFrameCount -- 过载帧数量 代码示例 OverLoadFrameRate -- 过载帧速率 代码示例 StandardFrameCount -- 标准帧数量 代码示例 StandardFrameRate -- 标准帧速率 代码示例 StandardRemoteFrameCount -- 标准远程帧数量 代码示例 StandardRemote…

Java注解编译期处理AbstractProcessor详解

文章目录概述注解处理器注解处理流程AbstractProcessorgetSupportedOptions()getSupportedAnnotationTypesgetSupportedSourceVersioninit初始化process 处理方法如何注册注解处理器如何调试编译期代码Maven相关配置(指定生效的Processor)注意事项自定义注解处理器范例范例一&a…

多线程小知识

多线程 多线程环境使用哈希表HashMapHashtableConcurrentHashMap 死锁死锁是什么两者之间的死锁多人之间的死锁 死锁产生的四个必要条件:互斥使用不可抢占请求和保持循环等待 不同的锁ReentrantLockSynchronized和ReentrantLock之间的区别:具体选择Synchronized加锁工作过程偏向…

using namespace std 是什么意思——C++命名空间

目录 namespace命名空间局部域和全局域namespace展开命名空间指定命名空间 命名空间的嵌套不同文件中的同名命名空间 using namespace std 是什么意思 我们先看一段C代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 0;int main() {printf(&quo…

6.2 统计量与抽样分布

学习目标&#xff1a; 我的理解: 统计量是从一个样本中计算得到的数值&#xff0c;用于描述样本的某种特征或性质。统计量可以用来推断总体的特征或性质&#xff0c;因为样本是总体的一部分。 通常&#xff0c;统计量是通过对样本中的数据进行计算得到的&#xff0c;例如平均…

3年轻人20万开店日营业额79.2元,年轻人开店还能赚到钱吗?

最近&#xff0c;河南郑州的蔡先生和2个朋友合伙开一家汉堡店&#xff0c;生意很惨淡&#xff0c;日营业额79.2元。 蔡先生表示&#xff0c;他们开店失败的最大原因就是没有做好前期准备工作&#xff0c;产品没有吸引人的特色&#xff0c;导致正式营业后吸引不到客户。 蔡先生用…

Python 实现海康机器人工业相机 MV-CU060-10GM 的实时显示视频流及拍照功能

一、背景介绍 1、最近项目中需要给客户对接海康机器人工业相机 MV-CU060-10GM&#xff1b; 2、客户要求通过部署的管理平台&#xff0c;可以在页面上实现如下功能&#xff1a; 1&#xff09;相机视频流开始预览&#xff1b; 2&#xff09;相机视频流停止预览&#xff1b; 3&am…

三月份跳槽了,历经阿里测开岗4轮面试,不出意外,被刷了...

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前几天&#xff0c;我看到有朋友留言说&#xff0c;他在面试阿里的测试开发工程师的时候&#xff0c;灵魂拷问三小…

NIO非阻塞式网络通信实例

一、概述 1、NIO有三大核心部分&#xff1a;Channel(通道)&#xff0c;Buufer(缓存区)&#xff0c;Selector(选择器) Buffer缓存区 缓冲区本质上是一块可以写入数据&#xff0c;然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象&#xff0c;并提供了 一组方法&am…

❤Linux文件、目录与磁盘格式总结❤

文章目录 Linux文件、目录与磁盘格式总结Linux文件权限chgrpchmodchown文件种类Linux文件扩展名 Linux文件与目录管理常用的目录解释目录树绝对路径与相对路径cd(切换目录)pwd(显示当前目录)mkdir(建立一个新目录)rmdir(删除空目录)执行文件路径变量$PATHls(文件与目录的查看)c…

青藤首提“业安融合”理念,正式发布先进云安全方案CNAPP

4月18日&#xff0c;以“云时代&#xff0c;安全变了”为主题的2023年云安全高峰论坛在北京举行。会上&#xff0c;青藤首次提出“业安融合”理念&#xff0c;正式发布先进云安全方案CNAPP。 中国全面进入云和数字化时代 当前&#xff0c;全球已进入数字经济时代&#xff0c;…

物联感知产品如何助力企业实现智能化转型?

如果您的企业想要实现设备全生命周期管理、设备信息管理、设备监控和数据处理等功能&#xff0c;想要进行智能化数字转型&#xff0c;不妨了解一下物联感知。 物联感知产品是利用物联网技术&#xff0c;实现对物理世界的感知、联接和智能化。物联感知产品一般由四个部分组成&a…