pgsql处理文档类型数据_【干货总结】:可能是史上最全的MySQL和PGSQL对比材料

关于SQL特性支持情况的对比,可以参考:http://www.sql-workbench.net/dbms_comparison.html

9. 主从复制安全性

PGSQL

同步流复制、强同步(remote apply)、高安全,不会丢数据

PGSQL同步流复制:所有从库宕机,主库会罢工,主库无法自动切换为异步流复制(异步模式),需要通过增加从库数量来解决,一般生产环境至少有两个从库

手动解决:在PG主库修改参数synchronous_standby_names ='',并执行命令: pgctl reload ,把主库切换为异步模式

主从数据完全一致是高可用切换的第一前提,所以PGSQL选择主库罢工也是可以理解

MySQL

增强半同步复制 ,mysql5.7版本增强半同步才能保证主从复制时候不丢数据

mysql5.7半同步复制相关参数:

参数rpl_semi_sync_master_wait_for_slave_count 等待至少多少个从库接收到binlog,主库才提交事务,一般设置为1,性能最高

参数rpl_semi_sync_master_timeout 等待多少毫秒,从库无回应自动切换为异步模式,一般设置为无限大,不让主库自动切换为异步模式

所有从库宕机,主库会罢工,因为无法收到任何从库的应答包

手动解决:在MySQL主库修改参数rpl_semi_sync_master_wait_for_slave_count=0

10. 多字段统计信息

PGSQL

支持多字段统计信息

MySQL

不支持多字段统计信息

11. 索引类型

PGSQL

多种索引类型(btree , hash , gin , gist , sp-gist , brin , bloom , rum , zombodb , bitmap,部分索引,表达式索引)

MySQL

btree 索引,全文索引(低效),表达式索引(需要建虚拟列),hash 索引只在内存表

12. 物理表连接算法

PGSQL

支持  nested-loop join 、hash join 、merge join

MySQL

只支持  nested-loop join

13. 子查询和视图性能

PGSQL

子查询,视图优化,性能比较高

MySQL

视图谓词条件下推限制多,子查询上拉限制多

14. 执行计划即时编译

PGSQL

支持JIT    执行计划即时编译,使用LLVM编译器

MySQL

不支持执行计划即时编译

15. 并行查询

PGSQL

并行查询(多种并行查询优化方法),并行查询一般多见于商业数据库,是重量级功能

MySQL

有限,只支持主键并行查询

16. 物化视图

PGSQL

支持物化视图

MySQL

不支持物化视图

17. 插件功能

PGSQL

支持插件功能,可以丰富PGSQL的功能,GIS地理插件,时序数据库插件, 向量化执行插件等等

MySQL

不支持插件功能

18. check约束

PGSQL

支持check约束

MySQL

不支持check约束,可以写check约束,但存储引擎会忽略它的作用,因此check约束并不起作用(mariadb 支持)

19. gpu 加速SQL

PGSQL

可以使用gpu 加速SQL的执行速度

MySQL

不支持gpu 加速SQL 的执行速度

20. 数据类型

PGSQL

数据类型丰富,如 ltree,hstore,数组类型,ip类型,text类型,有了text类型不再需要varchar,text类型字段最大存储1GB

MySQL

数据类型不够丰富

21. 跨库查询

PGSQL

不支持跨库查询,这个跟Oracle 12C以前一样

MySQL

可以跨库查询

22. 备份还原

PGSQL

备份还原非常简单,时点还原操作比SQL Server还要简单,完整备份+wal归档备份(增量)

假如有一个三节点的PGSQL主从集群,可以随便在其中一个节点做完整备份和wal归档备份

MySQL

备份还原相对不太简单,完整备份+binlog备份(增量)

完整备份需要percona的XtraBackup工具做物理备份,MySQL本身不支持物理备份

时点还原操作步骤繁琐复杂

23. 性能视图

PGSQL

需要安装pg_stat_statements插件,pg_stat_statements插件提供了丰富的性能视图:如:等待事件,系统统计信息等

不好的地方是,安装插件需要重启数据库,并且需要收集性能信息的数据库需要执行一个命令:create extension pg_stat_statements命令

否则不会收集任何性能信息,比较麻烦

MySQL

自带PS库,默认很多功能没有打开,而且打开PS库的性能视图功能对性能有影响(如:内存占用导致OOM bug)

24. 安装方式

PGSQL

有各个平台的包rpm包,deb包等等,相比MySQL缺少了二进制包,一般用源码编译安装,安装时间会长一些,执行命令多一些

MySQL

有各个平台的包rpm包,deb包等等,源码编译安装、二进制包安装,一般用二进制包安装,方便快捷

25. DDL操作

PGSQL

加字段、可变长字段类型长度改大不会锁表,所有的DDL操作都不需要借助第三方工具

MySQL

由于大部分DDL操作都会锁表,例如加字段、可变长字段类型长度改大,所以需要借助percona-toolkit里面的pt-online-schema-change工具去完成操作

将影响减少到最低,特别是对大表进行DDL操作

26. 大版本发布速度

PGSQL

PGSQL每年一个大版本发布,大版本发布的第二年就可以上生产环境,版本迭代速度很快

PGSQL 10正式版推出时间:2017年

PGSQL 11正式版推出时间:2018年

PGSQL 12正式版推出时间:2019年

MySQL

MySQL的大版本发布一般是2年~3年,一般大版本发布后的第二年才可以上生产环境,避免有坑,版本发布速度比较慢

MySQL5.6正式版推出时间:2013年

MySQL5.7正式版推出时间:2015年

MySQL8.0正式版推出时间:2018年

27. returning语法

PGSQL

支持returning语法,returning clause 支持 DML 返回 Resultset,减少一次 Client DB Server 交互

MySQL

不支持returning语法

28. 内部架构

PGSQL

多进程架构,并发连接数不能太多,跟Oracle一样,既然跟Oracle一样,那么很多优化方法也是相通的,例如:开启大页内存

MySQL

多线程架构,虽然多线程架构,但是官方有限制连接数,原因是系统的并发度是有限的,线程数太多,反而系统的处理能力下降,随着连接数上升,反而性能下降

一般同时只能处理200 ~300个数据库连接

29. 聚集索引

PGSQL

不支持聚集索引,PGSQL本身的MVCC的实现机制所导致

MySQL

支持聚集索引

30. 空闲事务终结功能

PGSQL

通过设置 idle_in_transaction_session_timeout参数来终止空闲事务,比如:应用代码中忘记关闭已开启的事务,PGSQL会自动查杀这种类型的会话事务

MySQL

不支持终止空闲事务功能

31. 应付超大数据量

PGSQL

不能应付超大数据量,由于PGSQL本身的MVCC设计问题,需要垃圾回收,只能期待后面的大版本做优化

MySQL

不能应付超大数据量,MySQL自身架构的问题

32. 分布式演进

PGSQL

HTAP数据库:cockroachDB、腾讯Tbase

分片集群:  Postgres-XC、Postgres-XL

MySQL

HTAP数据库:TiDB

分片集群: 各种各样的中间件,不一一列举

小结

上面的对比表还不是很完善,只有一些本人认为比较关键的特性拿出来对比

总的来说,MySQL因为需要支持更换存储引擎,所以某些功能都要受制于存储引擎层,例如:物理复制

而PGSQL不支持更换存储引擎(在PGSQL V12开始也支持可插拨的表存取接口),而且一直由官方统一开发和维护,所以相对比较稳定,功能也比较完善,对得上它的称号:《世界上功能最为强大的开源数据库》

PGSQL V12 支持可插拨的表存取接口之后,有可能由第三方存储引擎来改进PGSQL本身的MVCC实现机制,而不需要等待官方去解决,聚集索引、undo表空间这些都不再是问题

如有不对的地方,欢迎大家拍砖o(∩_∩)o

本文版权归作者所有,未经作者同意不得转载。

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

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

相关文章

计算机局域网有哪些硬件组成,局域网的硬件组成有哪些

局域网的硬件组成有哪些局域网(英文:Local Area Network 缩写LAN),指有限区域(如办公室或楼层)内的多台计算机通过共享的传输介质互连,所组成的封闭网络。一般是方圆几千米以内,局域网可以实现文件管理、应用软件共享、打印机共享…

afn原理 ios_iOS面试题:AFNetworking 底层原理分析

AFNetworking主要是对NSURLSession和NSURLConnection(iOS9.0废弃)的封装,其中主要有以下类:1). AFHTTPRequestOperationManager:内部封装的是 NSURLConnection, 负责发送网络请求, 使用最多的一个类。(3.0废弃)2). AFHTTPSessionManager:内部封装是 NSUR…

追加的英文计算机,Latex同时添加中英文摘要

注重版权,若要转载烦请附上作者和链接作者:Joshua_yi链接:https://blog.csdn.net/weixin_44984664/article/details/106168468哎,已经步入了开始写论文的年纪了,从之前的上传作业也慢慢变成了上交论文第一次用latex这玩…

网页中设定表格边框的厚度的属性_请写出在网页中设定表格边框的厚度的属性_______;设定表格单元格之间宽度属性...

【单选题】已知i110sin(ωt φ1)A,i25sin(ωt φ2)A,φ1-φ2π,则它们的相位关系是【判断题】488 . 混合性食物的食物热效应约占其总能量的10%。【单选题】2.2KW的电器正常工作1h所消耗的电能是【单选题】*从流场角度而言,北半球地面气旋是________。【单选题】*船舶在南半球…

React 路由

引言 在我们之前写的页面当中,用我们的惯用思维去思考的话,可能会需要写很多的页面,例如做一个 tab 栏,我们可能会想每个选项都要对应一个 HTML 文件,这样会很麻烦,甚至不友好,我们把这种称为 …

清华大学06届 计算机王煜,祝贺!这两位三年前从超银中学毕业的学霸,今年被清华大学“破格”录取啦...

青岛日报社/观海新闻8月13日讯 今年是“强基计划”首年招生,“强基计划”属于单独批次录取,也是高考所有批次录取中最早公布结果的,一经录取,就不再参加后续高考志愿录取投档。观海新闻记者从超银中学获悉,青岛二中今年…

jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...

目录:【阐述】:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的。【步骤】:一、创建WebService接口模拟服务端如果大家有…

滨江机器人餐厅_餐厅来了机器人服务员

龙源期刊网http://www.qikan.com.cn餐厅来了机器人服务员作者:柯静夏峥来源:《人民周刊》2016年第03期餐饮企业引入机器人,博的是眼球,省的是最关键的人力成本。不少人都希望身边有“大白”那样的暖男机器人,这并非遥不…

cad解除块的快捷命令_CAD撤销上一步和恢復下一步的快捷键是什么?

对于怎么撤回到上一步,大家想到最多的应该是Ctrl Z快捷键来撤销,但是如果在CAD编辑器中可直接使用返回命令即可!具体操作方法如下:1.进入到软件的操作界面之后,鼠标点击软件最左侧菜单栏中的“文件”按钮,在…

本机上的ajax需要跨域吗,jQuery AJAX跨域

jQuery AJAX跨域这是两个页面,test.php和testserver.php。test.php的$(function() {$.ajax({url:"testserver.php",success:function() {alert("Success");},error:function() {alert("Error");},dataType:"json",type:&qu…

flask bootstrap ajax,使用Flask集成bootstrap的方法

1. 下载flask-bootstrappip install flask-bootstrap2. 找到base.html文件将site-packages\flask_bootstrap\templates文件夹下的bootstrap目录copy到你的项目\templates目录下,确保bootstrap目录下包含base.html文件,因为我们后面要用到。3. 代码user.h…

android 模糊读取文件名_Android 从路径中获取文件名 | 学步园

转载:http://androidstudy.iteye.com/blog/787560方法一:利用String类public String getFileName(String pathandname){int startpathandname.lastIndexOf("/");int endpathandname.lastIndexOf(".");if (start!-1 && end!-…

chrome切换前端模式_H5暗黑模式在京东收银台中的实践

背景暗黑主题下,用户可以选择采用深色的系统范围外观而不是浅色外观。在暗黑模式下,系统对所有窗口,视图,菜单和控件采用较暗的调色板。谷歌的 Gmail 和 Chrome 浏览器、聊天工具 slack、telegram、Edge 浏览器和 Office 移动版 A…

使用udp协议实现服务器端程序时,用VisualC#实现UDP协议(二)

12.并以下面代码替换Form.cs中由系统产生的InitializeComponent过程。private void InitializeComponent ( ){this.button1 new System.Windows.Forms.Button ( ) ;this.button2 new System.Windows.Forms.Button ( ) ;this.textBox1 new System.Windows.Forms.TextBox ( ) …

circlegan_CycleGAN原理以及代码全解析

许多名画造假者费尽毕生的心血,试图模仿出艺术名家的风格。如今,CycleGAN就可以初步实现这个神奇的功能。这个功能就是风格迁移,比如下图,照片可以被赋予莫奈,梵高等人的绘画风格这属于是无配对数据(unpaired)产生的图…

魅族16无信号服务器,魅族16信号差的解决办法

手机信号问题一直都是人们关注的问题,在日常使用时有些地方手机可能出现突然信号变差,可能别人的手机信号一直很好只有你的出现了问题。魅族手机最早的几个版本都很容易出现这种问题,新款的魅族16怎么样呢?魅族16信号差怎么解决呢…

服务器系统核心和带gui区别,Windows Server 2012图形用户界面(GUI)和服务器核心(Server Core)之间的切换...

当安装 Windows Server 2012 时,咱们能够在“服务器核心安装”和“彻底安装”之间任选其一。“带 GUI 选项的服务器”选项Windows Server 2012 等效于 Windows Server 2008 R2 中的彻底安装选项。“服务器核心安装”选项可减小所需的磁盘空间、潜在的***面&#xff…

用python控制键盘_【python黑科技-pyautogui】教你用python控制滑鼠与键盘

今天来聊聊python中非常酷炫的功能,控制滑鼠与键盘,理论上,如果你程序功力非常强的话,甚至可以用这个模组写出一个「游戏插件」,让程序操控你的滑鼠与键盘帮你玩游戏本文测试环境: anaconda, spyder, python3.7安装pya…

ulimit限制 新系统_Linux查看及修改系统的资源限制命令ulimit

在Linux,查看系统对资源使用的显示可以使用命令ulimit,其中参数-a会列出所有的资源使用限制。[demoserver ~]$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimite…

华为策略路由加等价路由_华为——防火墙——策略路由配置及思路

华为——策略路由(校园网配置)作用:通过分析数据报的源地址和目标地址,按照策略规则选择不同的网关,进行数据转发。提供冗余,负载,但是还是单线路的速度。只是提供了不同的方向,并没有进行合并线路。拓扑图…