Mysql 和 Postgresql(PGSQL) 对比_starrocks与pg库的性能对比-CSDN博客


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

Mysql 和 Postgresql(PGSQL) 对比_starrocks与pg库的性能对比-CSDN博客
Mysql 和 Postgresql(PGSQL) 对比
风情客家__
已于 2023-08-09 17:34:15 修改
阅读量709
收藏
点赞数
分类专栏:
Postgresql
文章标签:
postgresql
于 2018-12-06 17:32:26 首次发布
原文链接:https://www.cnblogs.com/Oman/p/5944709.html
版权
Postgresql
专栏收录该内容
31 篇文章
4 订阅
订阅专栏
一、事务隔离之间的比较
事务隔离级别 postgresql mysql 读未提交 无法读脏数据 有 读已提交 快照实现 快照实现 可重复读 有,无幻读,发生冲突时,牺牲其中一个事务 已实现,有幻读,悲观锁,因为Gap Lock问题,存在性能问题 可串行化 已实现,通过SSI实现,乐观锁,性能比较好 悲观锁,S2PL,性能不好,实用性比较差
二、持久化之间的比较
持久化技术 postgresql mysql 事务的持久化 WAL日志 binlog和innodb的redo log 页断裂问题 full_page_writes double write 检查块的一致性 checksum checksum,db_lock_checking 事务同步提交 默认是同步synchronous_commit=on,session级别可以设置,更灵活 sync_binlog=1,innodb_flush_log_at_trx_commit=1全局参数
postgresql中的synchronous_commit
synchronous_commit:同步提交参数,控制事务提交后返回客户端是否成功的策略
选值类型:
on:1)没有开启备库,当wal日志真正刷新到磁盘永久存储后才会返回客户端事务已提交成功;2)开启了同步备库,设置synchronous_standby_names,必须要等事务日志刷新到本地磁盘,并且还要等远程备库页提交到磁盘才能返回客户端已经提交off:写到缓存中就会向客户端返回提交成功,延迟写入磁盘,延迟时间最大为3倍的wal_writer_delay参数。remote_write:当事务提交时,不仅要把wal刷新到磁盘,还需要等wal日志发送备库操作系统,但不需要等备库刷新到磁盘,因此如果备库此时发生实例终端下会有数据丢失,因为数据还在操作系统上,而如果操作系统故障,则此部分wal日志还没有来的及就会丢失,备库启动后还需要主库读取wal日志local:当事务提交时,仅写入本地磁盘即可返回客户端事务提交成功,而不管是否同步备库
PS: 如果没有设置同步备库,则on/remote_write/local都是一样的,仅等待事务刷新到本地磁盘
-- session局部设置,异步同步方式
set local synchronous_commit to OFF;
三、复制之间的比较
postgresql mysql 支持物理复制和逻辑复制 仅支持逻辑复制 物理复制延迟小 逻辑复制延时大 大更新对复制延迟影响小 大更新对复制延迟的影响很大,很容易导致复制延迟 物理复制主备之间数据绝对一致 逻辑复制可能出现准备数据不一致情况 支持一主多从,支持联级复制,不支持双主架构 支持一主多从,支持联级复制,支持双主架构
四、查询相关功能的比较
postgresql mysql 成熟的基于代价的SQL优化器,复杂SQL性能很好 查询优化器不够成熟,非完全的基于代价的SQL优化器,对复杂查询的性能较低 多种表连接类型:nested-loop join,sort-merge join,hash join 一种表连接类型:nested-loop 非常智能,可以走多个索引 大部分查询只能使用表上得单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还有慢 pg11版本之前表增加列基本上是重建表和索引,消耗时间比较长,pg11之后对非空列添加不需要重建 表增加列,只是在数据字典中增表定义,不会重建表 支持在线创建索引,pg10开始支持并行创建索引 支持在线创建索引,不支持并发索引 支持并行查询 mysql8.0之前不支持并行查询 支持B-树,哈希,R-树和Gist索引 B-树,哈希(不同存储引擎)
postgresql连接类型
1).nested loop join
对左表中找到的每一行都要扫描右表一次。容易实现,但是可能非常耗时,但可以同规格右表索引控制。对于被连接的数据子集较少的情况,nested-loop是很好的选择,但是如果右表没有索引一般就不会使用nested-loop。
2).merge join
在连接开始之前,每一个表都按照连接的排列好序列,然后两个表会并行扫描,匹配的行被整合成连接行。由于这种连接中每个表只被扫描一次。它所要求的排序可以通过一个显式的排序步骤得到,或使用一个连接键上的索引按适当顺序扫描关系得到
3).hash join
右表会先被扫描并且被载入到一个哈希表,使用连接列作为哈希键。接下来左表被扫描,扫描中找到的每一行的连接属性值被用做哈希键在哈希表中查找匹配的行
各连接方式之期的对比:
类别 nested-loop sort-merge join hash join 优化器提示 use_nl use_merge use_hash 使用条件 任何连接 主要用于不等价连接: <,>,>=,<=,不包括不等号<> 仅用于等价连接 消耗资源 CPU、磁盘I/0 内存、临时空间 内存、临时空间 优点 当有高选择性能索引或进行限制性搜索时,效率比较高,能够快速返回第一次的搜索结果 当缺乏索引或者索引条件模糊时,排序合并连接比较嵌套循环有效 当缺乏索引或索引条件模糊时,哈希连接比嵌套循环有效。适用于数据量较大的场景 缺点 当索引丢失或查询条件限制不够时,效率很低 所有的表都需要排序,它为最优化吞吐量而设置,并且在结果没有全表找到前不返回数据 为建立哈希表,需要大量内存,第一次结果返回速度很慢
五、表功能之间的比较
postgresql mysql 除了支持pl/pgsql写存储过程,还支持pl/perl,pl/python,pl/tcl;也支持用C语言的写存储过程 存储过程与触发器功能有限 有单独的sequence 没有单独的sequence,sequence在表主键上 PostGIS插件支持,PostGIS是目前使用最广泛地开源GIS系统 GIS的支持有限 通过GIN索引提供了对JSON内部数据的索引,只要创建索引之后,不管存储json的数据格式如何变化,都能利用GIN索引加快查询 json类型只支持虚拟列方式创建索引,不支持json内部数据的索引,当json内部的列结构不确定时,不能事先创建索引来提高查询性能 通过FDW框架完善支持外部表功能,可以方便连接其他异构数据源,如mysql,mongodb等 外部表功能有限,基本不具有太多实用价值 堆表,不支持索引组织表 索引组织表,不支持堆表 ddl可以回滚,支持原子性DDL DDL不支持回滚,mysql8.0之前多个ddl不能原子执行 支持窗口函数 mysql8.0之前不支持窗口函数
六、视图和安全之间的比较
postgresql mysql 支持物化视图 不支持物化视图 支持临时表 支持临时表 支持主键,外键,唯一键,检查,非约束,还支持exclusion constraints 支持主键,外键,唯一键,检查,非约束 支持两阶段提交 支持两阶段提交 认证方式丰富,信任/口令/PAM/LDAP/Kerberos/基于ident 基本支持密码认证 可以使用pgcrypto库中的函数对列进行加密/解密;可以通过ssl连接实现网络加密 可以在表级制定密码来对数据进行加密;可以使用aes_encrypt和aes_decrypt函数对列数据进行加密和解密;可以通过ssl连接实现网络加密 使用explain命令查看查询的解释计划,结果很直观,也很详细 使用explain命令查看查询解释计划,但结果不直观,不详细 postgresql完成遵从ACID mysql只有innodb等少量存储引擎遵从ACID
什么是物化视图
物化视图:不同于一般视图,它会将视图内容物理保存在数据库中,是关系型数据库中很重要的一个功能。
-- 创建物化视图
create materialized view vw_name as ...
-- 刷新物化视图
refresh materialized view vw_name;
七、postgresql和mysql的优势比较
1)postgresql相对于mysql的优势:
在SQL的标准实现上要比mysql完善,而且功能实现比较严谨存储过程的功能支持要比mysql好,具备本地缓存执行计划的能力对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强pg主表采用堆表存放,mysql采用索引组织表,能够支持比mysql更大的数据量PG的主备复制属于物理复制,相对于mysql基于的binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小
2)mysql相对于postgresql的优势:
innodb的基于回滚段实现的MVCC机制,相对pg新老数据存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触发vacuum,会带来的多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。mysql采用索引组织表,这种存储方式非常适合基于主键匹配的查询,删改操作,但是对表结构设置存在约束mysql优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作MySQL分区表的实现要优于pg的基于继承表的分区实现,主要体现在分区个数的达到上千万后的处理性能差异的较大mysql的存储引擎插件化机制,使得它的应用场景更加广泛
文档来源:
版本比较:PostgreSQL与MySQL 分析对比_云平_Stephen的博客-CSDN博客优势比较:https://www.cnblogs.com/sbj-dawn/p/8053549.htmlpostgresql连接方式:表的连接方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN(修改)_如何选择nested loop和hash join两种方式_zhousenshan的博客-CSDN博客
优惠劵
风情客家__
关注
关注
点赞
收藏
觉得还不错?
一键收藏
知道了
评论
Mysql 和 Postgresql(PGSQL) 对比
原文地址:https://www.cnblogs.com/Oman/p/5944709.html
复制链接
扫一扫
专栏目录
sql server ,mysql,starrocks性能对比.docx
04-15
sql server ,mysql,starrocks
mysql转换postgresql工具
03-09
国外大牛写的一个mysql数据库转换postgresql的脚本。亲试可以无错误运行。
参与评论
您还未登录,请先
登录
后发表或查看评论
MySQL与PostgreSQL对比
雪辉博客
09-20
327
MySQL
PostgreSQL
数据类型支持
支持JSON,但不如PostgreSQL多有一些扩从性,但不如PostgreSQL
支持更多的数据类型,如数组、hstore、JSON、JSONB、范围类型等
扩展性
有一些扩展性,但不如PostgreSQL
支持自定义数据类型、函数、操作符,具有强大的扩展性
SQL兼容性
遵循SQL标准,但有一些自定义扩展
更接近ANSISOL标准,支持窗口函数、公共表表达式等
性能优化
对简单查询进行了优化,特别是读密集型摸作
有一个复杂的查
nacos1.4.0部署包(兼容postgresql和mysql)
05-26
nacos1.4.0部署包,可以直接在windows和linux运行,兼容mysql和postgresql。修改nacos源码请查看本文章:https://blog.csdn.net/zxfmamama/article/details/117293712
mysql2pgsql.zip
07-14
国外大牛写的一个mysql数据库转换postgresql的脚本。亲试可以无错误运行。
mybatis - 代码生成(postgresql\mysql)
06-07
postgresql\mysql 的逆向工程(生成的代码含:controller、service、serviceImpl、entity、mapper、mapper.xml)
Postgresql和mysql的区别探究
分享很多自己亲身学习到的知识
06-13
5903
PostgreSQL和MySQL是两种不同的关系型数据库管理系统,它们在架构设计、数据类型和查询语言、数据完整性和容错性等方面有所不同。如果你需要处理的是复杂的数据类型,需要进行高级索引查询或涉及到大量的JSON数据,那么使用PostgreSQL可能更胜一筹。而如果你需要一个响应快速和性能优异的数据库,那么使用MySQL相对而言更加合适。不过,最佳的选择往往取决于你的具体需求和应用场景。
MySQL 和 PostgreSQL,我到底选择哪个?
网络技术联盟站
06-20
5676
MySQL 和 PostgreSQL 是两个广泛使用的关系型数据库管理系统(RDBMS)。它们都具有强大的功能和广泛的社区支持,但在某些方面存在一些差异。本文将详细比较 MySQL 和 PostgreSQL,包括它们的特点、性能、扩展性、安全性以及适用场景等方面。
【数据库】Postgresql 与 MySQL 比较
wangdong的博客
10-28
2803
Postgresql 与 MySQL 异同比较,结合两者底层存储引擎及面向开发使用等方面进行对比......
两种数据库MySQL 与 PostgresSQL 的 全面比较
最新发布
tigerhhzz的博客
10-08
380
MySQL和PostgreSQL都是强大的关系型数据库管理系统,但它们适用于不同的用例和需求。如果您需要处理大型数据集、复杂查询和强调数据完整性的应用程序,PostgreSQL可能是更好的选择。另一方面,如果您的应用程序主要是读取密集型或需要高性能的写入操作,MySQL可能更合适。最终的选择将取决于您的具体需求、团队技能和项目的性质。无论您选择哪个数据库,都需要深入研究其特性和最佳实践,以确保数据库的高性能和可靠性。
postgresql和mysql之间比较
meser88的博客
06-28
349
物化视图:不同于一般视图,它会将视图内容物理保存在数据库中,是关系型数据库中很重要的一个功能。
java jdbc 数据库 mysql oracle pgsql 驱动
08-25
驱动程序包名:mysql-connector-Java-3.1.11-bin.jar 驱动类的名字:com.mysql.jdbc.Driver JDBC URL:jdbc:mysql://dbip:port/databasename 说明:驱动程序包名有可能会变 JDBC URL其中各个部分含义如下: dbip –...
C#连接数据库MYSQL和POSTGRESQL.pdf
09-30
C#连接数据库MYSQL和POSTGRESQL.pdf
支持多种数据源的nacos-1.4.2,包括mysql/postgresql/oracle/derby
02-24
支持多种数据源的nacos,包括mysql/postgresql/oracle/derby 版本号为1.4.2 对应的各个组件版本 springcloud version: 2020.0.1 springboot version: 2.4.2 springcloudalibaba version: 2021.1 需根据自身情况修改...
mysql2pgsql.perl
10-10
mysql迁移到postgresql工具 mysql2pgsql.perl,支持环境 Linux / Mac OS / BSD / Solaris
Seatunnel系列之:使用Seatunnel从hive数据库同步数据到mysql、sqlserver、elasticsearch、starrocks、postgresql等数据库
zhengzaifeidelushang的博客
10-08
94
Seatunnel系列之:使用Seatunnel从hive数据库同步数据到mysql、sqlserver、elasticsearch、starrocks、postgresql等数据库
MySQL和PostgreSQL的比较
xiaosong_2016的博客
06-27
496
MySQL和PostgreSQL的比较
mysql和pgsql
08-12
MySQL和PostgreSQL(简称为PgSQL)是两种常见的关系型数据库管理系统(RDBMS)。它们都具有广泛的应用和一系列功能,但在某些方面有所不同。
1. 开发历史:MySQL是由瑞典公司MySQL AB开发的,后来被Oracle收购。而PgSQL是由加拿大人Andrew Yu和Jolly Chen在加拿大大学开发的。
2. 数据类型:MySQL和PgSQL都支持各种标准的数据类型,如整数、浮点数、字符串等。然而,在处理日期和时间类型时,两者有所不同。MySQL使用DATETIME和TIMESTAMP来表示日期和时间,而PgSQL使用DATE、TIME和TIMESTAMP。
3. 扩展性:MySQL和PgSQL在扩展性方面也有所不同。MySQL使用主从复制来实现横向扩展,即通过将数据复制到多个节点来提高读取性能。PgSQL则提供了更强大的横向扩展功能,称为流复制(Streaming Replication),它允许将数据复制到多个节点,并支持高可用性配置。
4. SQL兼容性:MySQL和PgSQL都遵循SQL标准,但在某些方面有所差异。例如,PgSQL对SQL标准的支持更全面,支持更多的高级功能,如窗口函数、递归查询等。MySQL则更注重性能和简单性,有时可能会有一些非标准的行为。
5. 存储引擎:MySQL支持多个存储引擎,如InnoDB、MyISAM等,每个引擎都有其特点和适用场景。PgSQL则默认使用一种称为PostgreSQL Global Development Group(PGDG)的存储引擎。
总的来说,MySQL更适合简单的应用程序和小型项目,而PgSQL则更适合需要高级功能和复杂查询的大型项目。选择使用哪种数据库取决于具体的需求和项目要求。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
风情客家__
CSDN认证博客专家
CSDN认证企业博客
码龄12年
暂无认证
356
原创
1万+
周排名
1321
总排名
326万+
访问
等级
2万+
积分
2194
粉丝
1196
获赞
364
评论
7079
收藏
私信
关注
热门文章
GitLab使用教程(详细)
420348
linux xfs和ext4的区别
82680
Javascript中点击(click)事件的3种写法
45090
@Pointcut语法详解
44051
java List复制:浅拷贝与深拷贝
40438
分类专栏
FlinkVL
付费
1篇
K8s
73篇
Elasticsearch
48篇
LDAP
8篇
Ubuntu
4篇
VMware
15篇
Bat_Windows
38篇
面试
24篇
虚拟化(KVM等)
29篇
Grafana
1篇
Prometheus
9篇
Openshift
24篇
数据库
24篇
SpringBatch
18篇
Containerd
3篇
开源工具
1篇
项目管理
14篇
前端
4篇
CICD
1篇
Jenkins
1篇
银行金融
6篇
AI
29篇
Java Swing
10篇
camel
1篇
Scala
5篇
架构
2篇
数据治理
1篇
Camunda
13篇
用户画像
10篇
ClickHouse
1篇
DB2
2篇
SparkSql
3篇
Drools
7篇
TiDB
21篇
Confluent
9篇
Ansible
13篇
7篇
Kudu
22篇
Flink编程
2篇
kafka&logstash&flume&rabbitMq
68篇
Flink
46篇
CDH
17篇
大数据框架
39篇
sparkStreaming_storm
8篇
impala&greenplum
18篇
Spark
48篇
编程规范
13篇
Springboot
140篇
安全
11篇
容器(Docker_Podman)
52篇
Shell
6篇
jmeter&loadrunner
17篇
微服务
95篇
Hibernate
24篇
jwt&OAuth2&spring security
26篇
Redis
31篇
Postgresql
31篇
log4j2
4篇
maven
24篇
Git
16篇
Java
115篇
springMvc
14篇
spring
33篇
mysql
58篇
多线程
7篇
jvm
13篇
nginx
36篇
mongodb
10篇
Hive
5篇
网络通信
16篇
其它
26篇
idea
17篇
Linux
90篇
jsp
6篇
jeesite
mybatis
10篇
jquery
17篇
javascript
10篇
druid
6篇
消息队列
4篇
minio
3篇
java-设计模式
9篇
Python
36篇
hadoop
3篇
Arangodb
11篇
neo4j&知识图谱
10篇
软件架构图
10篇
最新评论
CentOS7安装kafka3.3.1集群----(不使用zookeeper)
L-SY:
请问鉴权要怎么配置
k8s 使用 containerd 运行时配置 http 私服(harbor等)
月慕向阳:
你好,--plain-http 加了命令是可以拉,但是运行在k8s里面,自动拉取不了,还是报http的错误
ArgoCD的安装与部署
神笔码农s:
argo组件的镜像根本下载不了 红一片 翻墙都不行
基于Docker从零搭建Prometheus监控报警系统
qq_47709869:
docker run -d \
--name pushgateway
-p 9091:9091 \
prom/pushgateway \
"-persistence.file=push_file" 启动报错pushgateway: error: unknown short flag '-p', try --help 怎么解决大佬
nginx修改conf后不生效的解决方法与root|alias总结
喵小小萌:
感谢感谢进程没杀死
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
k8s从私有仓库拉取镜像
Elasticsearch 7.X 中文分词器 ik 使用,及词库的动态扩展
docker 安装 OpenLDAP 及 LdapAdmin桌面版、页面版(osixia/openldap)
2023
10月
2篇
09月
39篇
08月
34篇
07月
40篇
06月
60篇
05月
54篇
04月
65篇
03月
31篇
02月
45篇
01月
25篇
2022年196篇
2021年221篇
2020年237篇
2019年209篇
2018年270篇
2014年1篇
2013年1篇
2012年6篇
目录
目录
分类专栏
FlinkVL
付费
1篇
K8s
73篇
Elasticsearch
48篇
LDAP
8篇
Ubuntu
4篇
VMware
15篇
Bat_Windows
38篇
面试
24篇
虚拟化(KVM等)
29篇
Grafana
1篇
Prometheus
9篇
Openshift
24篇
数据库
24篇
SpringBatch
18篇
Containerd
3篇
开源工具
1篇
项目管理
14篇
前端
4篇
CICD
1篇
Jenkins
1篇
银行金融
6篇
AI
29篇
Java Swing
10篇
camel
1篇
Scala
5篇
架构
2篇
数据治理
1篇
Camunda
13篇
用户画像
10篇
ClickHouse
1篇
DB2
2篇
SparkSql
3篇
Drools
7篇
TiDB
21篇
Confluent
9篇
Ansible
13篇
7篇
Kudu
22篇
Flink编程
2篇
kafka&logstash&flume&rabbitMq
68篇
Flink
46篇
CDH
17篇
大数据框架
39篇
sparkStreaming_storm
8篇
impala&greenplum
18篇
Spark
48篇
编程规范
13篇
Springboot
140篇
安全
11篇
容器(Docker_Podman)
52篇
Shell
6篇
jmeter&loadrunner
17篇
微服务
95篇
Hibernate
24篇
jwt&OAuth2&spring security
26篇
Redis
31篇
Postgresql
31篇
log4j2
4篇
maven
24篇
Git
16篇
Java
115篇
springMvc
14篇
spring
33篇
mysql
58篇
多线程
7篇
jvm
13篇
nginx
36篇
mongodb
10篇
Hive
5篇
网络通信
16篇
其它
26篇
idea
17篇
Linux
90篇
jsp
6篇
jeesite
mybatis
10篇
jquery
17篇
javascript
10篇
druid
6篇
消息队列
4篇
minio
3篇
java-设计模式
9篇
Python
36篇
hadoop
3篇
Arangodb
11篇
neo4j&知识图谱
10篇
软件架构图
10篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值