mysql与pgsql_十年磨一剑,沉淀……-程序员信息网

技术标签: PgSql  

来一张图胜过千言万语

在这里插入图片描述
哈哈 ,只是皮一下,还是要好好说话~~

为什么说pgsql是最先进的的开源关系型数据库?

因为pgsql是一款一专多长的全栈数据库!!

成熟的应用可能会用到许许多多的数据组件(功能):缓存,OLTP,OLAP/批处理/数据仓库,流处理/消息队列,搜索索引,NoSQL/文档数据库,地理数据库,空间数据库,时序数据库,图数据库。传统架构选型可能会组合使用多种组件,典型的如:Redis + MySQL + Greenplum/Hadoop + Kafuka/Flink + ElasticSearch。在这里MySQL只能扮演OLTP关系型数据库的角色,但如果是PostgreSQL,就可以身兼多职,One hold them all,比如:
OLTP:事务处理是PostgreSQL的本行
OLAP:citus分布式插件,ANSI SQL兼容,窗口函数,CTE,CUBE等高级分析功能,任意语言写UDF
流处理:PipelineDB扩展,Notify-Listen,物化视图,规则系统,灵活的存储过程与函数编写
时序数据:timescaledb时序数据库插件,分区表,BRIN索引
空间数据:PostGIS扩展(杀手锏),内建的几何类型支持,GiST索引。
搜索索引:全文搜索索引足以应对简单场景;丰富的索引类型,支持函数索引,条件索引
NoSQL:JSON,JSONB,XML,HStore原生支持,至NoSQL数据库的外部数据包装器
数据仓库:能平滑迁移至同属Pg生态的GreenPlum,DeepGreen,HAWK等,使用FDW进行ETL
图数据:递归查询
缓存:物化视图

在这里插入图片描述

因此,pgsql可以扮演多面手的角色,一个组件当做多个组件使用,单一数据组件选型可以极大地削减项目额外复杂度,意味着可以节省很多成本。

pg特色功能:

  1. 任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。
  2. PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。
  3. PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。
  4. PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
  5. PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持.
  6. 一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。
  7. 对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。

最后分享一下知乎众大神的见解:
PostgreSQL 与 MySQL 相比,优势何在?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/YYZZHC999/article/details/102728243

智能推荐

使用KEIL C51实现的简单合作式多任务操作系统内核_yyx112358的博客-程序员信息网

在51单片机上实现的合作式多任务系统内核。实现非常简单,完全C语言实现,无需汇编。每个任务最少只需要15B内存。

vue如何获取tree当前选中的节点_vue Treeselect树形下拉框之获取选中节点的ids和lables操作..._有伱真好的博客-程序员信息网

【相关学习推荐:js视频教程】API: https://vue-treeselect.js.org/#events1.ids: 即value1.lable: 需要用到方法:@select(node,instanceId) 和 @deselect(node,instanceId)v-model="DRHA_EFaultModeTree_value":multiple="true":options="...

2020年专转本计算机知识点,2020专转本计算机真题(2020年-2021年).pdf_weixin_39537049的博客-程序员信息网

2015 一、判断题(本大题共 20 小题,每小题 1 分,共 20 分。)1.现代计算机采用的是冯·诺依曼提出的“存储程序控制”思想,科学家们正在研究的生物计算机采用非冯·诺依曼结构。2 .通信系统的基本任务是传递信息,至少需由信源、信宿和信息三个要素组成。3 .CPU、内存储、总线等构成了计算机的“主机” , 外存储器、输入/输出设...

硅基光子学回路设计:方法,工具及挑战---(1)_faust_cao的博客-程序员信息网

未来的光集成的一个重要方向是硅基光电子集成,本文探讨了硅基PIC设计的系统设计流程。

Java MVC模式_快乐的小京巴的博客-程序员信息网

众所周知,我是一个程序猿,随时写博客是很正常的一件事对吧啊 SpringMVC是常见的框架,同时也是一种设计模式,大家应该都使用过ssm,其中就包含了SpringMVC模式,因为这种模式在我看来最大的优点就是将数据层,视图层和控制层分开了 M:数据层,也就是存放数据或者说是用来与数据库交互,我们存储以及获取数据都是通过M层来进行的 V:视图层,视图层是因为之前...

nginx 深入详解多进程模型_??yy的博客-程序员信息网

Nginx深入详解之多进程网络模型2013-11-03 15:17:57分类:Web开发一、进程模型 Nginx之所以为广大码农喜爱,除了其高性能外,还有其优雅的系统架构。与Memcached的经典多线程模型相比,Nginx是经典的多进程模型。Nginx启动后以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程,具体如下图...

随便推点

Mysql中数据类型括号中的数字代表的含义_vawterchen的博客-程序员信息网_数据类型后面的括号

我们平时用sql语句建数据库的时候,总是会写到int(11),varchar(200)。但是括号里面的值具体代表什么意思呢?今天被问到,然而彻底懵逼,在查阅了网上的资料后发现:int(1),这个长度1并不代表允许存储的宽度首先查找一个整数类型存储和范围:类型字节范围(有符号)范围(无符号)TINYINT1(-128,127)(0,255)SMALLIN...

Sentinel系统规则_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0044_脑瓜凉的博客-程序员信息网

技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152然后咱们来说一下这个系统规则怎么用可以看到系统规则,又叫系统自适应限流,就是说,sentinel从系统的整体维度,进行限流,参考,load,cpu使用率,总体平均的RT等等,入口的qps,并发线程数等等.这里解释一下,比如,这个意思就是,之前我们配置的都是根据某个具体的api接口配置的,但是sentinel也支持,比如,就跟上图一样,在整个应用的外面包一层,根据整体的情况,

tsconfig.json配置_大大大石頭的博客-程序员信息网_tsconfig.json

{ // 用来配置编译选项 "compilerOptions": { "target": "esnext",// 生成js 的版本,下一版本 "module": "esnext", // 生成的module的形式,esm,cmd,amd啥的 "strict": false, // 是否严格模式 "jsx": "preserve", // jsx用于的开发环境,preserve/react/RN "importHelpers": true, // 指定是否引入.

Linux和Windows的redis远程连接_weixin_43351935的博客-程序员信息网

1.本地启动redis,中间有连个词拼错了,就打马赛克了,2.Windows本地的IP地址为192.168.31.104, 我在Linux系统下连接一下,在Linux下我并没有新建数据库数据,因为本地新建的有,可以直接获取。slave端启动 这个为slave端3.打开redis桌面管理工具,可以查看数据库中的值,...

web 全栈开发-实战项目-四 连接mysql数据库--Sequelize_小dobby的博客-程序员信息网

web 全栈开发-实战项目- 连接mysql数据库–SequelizeSequelize 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。Sequelize官网地址:https://sequelize.org/Sequelize中文文档地址:https://www.sequelize.com.cn/

linux恢复 rm -rf 删除的文件:extundelete_zkj_123的博客-程序员信息网

环境 centos1、依赖库下载extundelete依赖e2fsprogs。方法1 使用yum下载yum -y install e2fsprogs  e2fsprogs-devel方法2 编译安装----e2fsprogs下载地址:http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/1

推荐文章

热门文章

相关标签