mysql与pgsql的区别

这篇具有很好参考价值的文章主要介绍了mysql与pgsql的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mysql与pgsql的区别

Pgsql中文文档
http://www.postgres.cn/docs/13/index.html

PG由于MySQL的点:

一、 PostgreSQL 的稳定性极强。 Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。

二、任何系统都有它的性能极限,在**高并发读写,负载逼近**极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。

三、PG 多年来在 GIS 领域处于优势地位,因为**它有丰富的几何类型**,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,pgsql的地理信息支持是很好的,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。

四、**PG 的“无锁定”特性非常突**出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。

五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。PG默认使用B-Tree,其实也就是B-link-Tree,是B+树的一个变形;MySQL默认使用的是B+树。-----这点参考一下几个链接:https://blog.csdn.net/obvious__/article/details/119900992?ops_request_misc=&request_id=&biz_id=102&utm_term=pgsql%E5%BA%95%E5%B1%82%E4%B9%9F%E6%98%AF%E4%BD%BF%E7%94%A8B+%E6%A0%91%E5%90%97&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-119900992.142v81insert_down1,201v4add_ask,239v2insert_chatgpt&spm=1018.2226.3001.4187

以及

https://blog.csdn.net/m0_53446118/article/details/120914806?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-120914806-blog-82972485.235%5Ev27%5Epc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-120914806-blog-82972485.235%5Ev27%5Epc_relevant_3mothn_strategy_recovery&utm_relevant_index=2。

六、PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL(听李元佳说过,但是没有验证过)。

七、PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。

八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。

九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。

十,pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)

PG 不如 MySQL 的地方:

第一,MySQL有一些实用的运维支持,如 slow-query.log ,这个pg肯定可以定制出来,但是如果可以配置使用就更好了。

第二是mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分,

第三点,MySQL的复制可以用多级从库,但是在9.2之前,PGSQL不能用从库带从库。

第四点,从测试结果上看,mysql 5.5的性能提升很大,单机性能强于pgsql,5.6应该会强更多.

第五点,对于web应用来说,mysql 5.6 的内置MC API功能很好用,PGSQL差一些。

另外一些:pgsql和mysql都是背后有商业公司,而且都不是一个公司。大部分开发者,都是拿工资的。说mysql的执行速度比pgsql快很多是不对的,速度接近,而且很多时候取决于你的配置。对于存储过程,函数,视图之类的功能,现在两个数据库都可以支持了。另外多线程架构和多进程架构之间没有绝对的好坏,oracle在unix上是多进程架构,在windows上是多线程架构。很多pg应用也是24/7的应用,比如skype. 最近几个版本VACUUM基本不影响PGSQL 运行,8.0之后的PGSQL不需要cygwin就可以在windows上运行。

至于说对于**事务的支持,mysql和pgsql都没有问题**。文章来源地址https://www.toymoban.com/news/detail-404813.html

到了这里,关于mysql与pgsql的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pgsql delete 语句恢复数据

    从数据库角度恢复已删除的数据通常需要使用备份和恢复工具,例如 pg_dump、pg_restore 或 pg_basebackup。以下是一些可能有用的步骤: 确定删除数据的时间点 通过 PostgreSQL 中的 WAL 日志和 archived WAL 日志,找到删除数据时的时间点,也就是最后一个有效的备份后到删除数据前的时

    2024年02月16日
    浏览(50)
  • PGSQL安装PostGIS扩展模块

    PostGIS是一个空间数据库,空间数据库像存储和操作数据库中其他任何对象一样去存储和操作空间对象。 空间数据与数据库关联起来的三个要素:数据类型、索引和函数。 空间数据类型:用于指定图形为点(point)、线(line)和面(polygon) 多维度空间索引:被用于进行空间

    2024年01月21日
    浏览(23)
  • pgsql数据库自动备份

    本文的写作原因:对实际客户需求的一次小总结,顺带做一次笔记 任何数据库都需要备份,备份数据是维护数据库必不可少的操作。 数据库备份常见的应用场景: 硬件故障造成数据库部分数据或全部数据丢失 人为操作失误造成某些数据被误操作 软件 BUG 造成部分数据或全部

    2024年02月08日
    浏览(33)
  • PgSQL-并行查询系列-介绍[译]

    PgSQL-并行查询系列-介绍 现代CPU模型拥有大量的CPU核心。多年来,数据库应用程序都是并发向数据库发送查询的。查询处理多个表的行时,若可以使用多核,则可以客观地提升性能。PgSQL 9.6引入了并行查询的新特性,开启并行查询后可以大幅提升性能。 1)若所有CPU核心已经饱

    2024年02月09日
    浏览(32)
  • pgsql时间处理的一些方式

    1.获取当前时间 now()函数: current_timestamp,同now(): 可以去掉now()、掉后面的+8等: 2.date_part函数 语法:DATE_PART(field, source), filed可以理解为要截取的类型。 下面是filed支持的类型: CENTURY,世纪,获取日期所在的世纪: MILLENNIUM,千年 YEAR,年份域 MONTH,对于timestamp数值,它是

    2024年02月06日
    浏览(30)
  • PgSQL的with as语法

     returning 返回的这一些字段,然后进行汇总为remove_alarms  然后select一下remove_alarms 出来的数据然后保存到tb_alarm_his 里面

    2024年04月09日
    浏览(59)
  • pgsql数据库加密解密

    1.安装外部模块 pgcrypto 2.查看pgcrypto版本 3.明文加密 aes:加密算法,支持aes、aes-cbc等 hex:编码格式,支持hex、base64等 account:秘钥,任意字符串 4.密文解密

    2024年02月12日
    浏览(34)
  • 【wireshark抓取数据包-PGSQL协议】

    测试查看PGSQL协议的网络流量数据明细 1)捕获过滤的条件设置,tcp.port==5432(数据库的端口) 2)上面是wireshark的主窗口,分三大主块:Packlist List(数据包列表)、Packet Details(数据包细节)、Packet Bytes(数据包字节)。

    2024年02月10日
    浏览(34)
  • PgSQL-执行器机制-Unique算子

    PgSQL-执行器机制-Unique算子 PgSQL中输出去重的元组有多种方法,比如通过HashAgg或者GroupAgg。这里我们介绍第三种方法,通过Unique算子来完成这个功能。当然语句上可以是:select distinct(id1) from t; 执行器执行算子的函数都是ExecXXX,其中XXX代表某个算子。Unique算子的执行是由函数

    2024年02月07日
    浏览(23)
  • 【PGSQL】date_trunc 函数

    date_trunc 函数用于在 PostgreSQL 中将日期或时间戳值截断(向下取整)到指定的精度级别。当您想要忽略较小的时间单位(例如,小时、分钟、秒),专注于较大的单位(例如,天、月、年)时,该函数非常有用。 date_trunc 的语法如下: date_trunc(unit, source); unit :指定要将源值截

    2024年01月17日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包