mysql和postgreSQL的区别

mysql

1、mysql多表连接查询方式支支持nest loop,不支持hash join和sort merge join。pg支持多种连接查询方式。

2、mysql子查询性能比pg低。

3、mysql的复制是异步的,即无法通过主从架构做到数据零丢失。一些第三方公司也有改造mysql源代码实现同步复制,但是不是很稳定。mysql的同步复制让人很头痛。

注:mysql5.7后支持全同步复制,主节点执行完一个事务,所有的从节点执行了该事务才会返回客户端。因为需要等待所有的从库执行完该事务才能返回,所以全同步复制性能会收到很严重的影响。在主库上提交事务之后,所有的从库节点必须收到、apply并且提交这些事务,然后主库线程才能继续做后续操作,即缺点是主库完成一个事务的时间会被拉长,性能降低。

4、在线操作功能较弱:mysql创建索引会锁住整个表。即再建索引的过程中,表不能做任何操作。pg建索引不会锁住整个表。

解决方法1:

一些大的互联网公司修改mysql源码来实现在线DDL的功能。

解决方法2:

在主从架构中,创建索引一般在从(slave)中先创建索引,之后把从库切换为主库(主从切换),之后再原先的master现在的slave数据库上把DDL做完。

5、在线操作功能较弱:mysql表中加列,基本就是新建一个表。相当于物理上新建了个表,即物理操作。

6、mysql对sql语法支持的功能较弱,基本上不适合做数据仓库。虽然也有厂商开发了基于mysql的数据仓库存储引擎,但是这个方案知识解决了部分数据仓库的问题,sql功能弱的问题仍没有完全解决。该存储引擎的社区版还有很多限制,如:不支持数据更新,不支持太多的并发执行(最多支持十几个)等。而pg不仅支持复杂的sql还支持大量的分析函数,非常适合做数据仓库。clickhouse也适合做数据仓库。

pg

1、pg支持多种表连接方式。支持大多数的sql语法(如with子句,mysql也支持with)。

2、pg字段类型支持数据类型。

3、可以使用pl/PGSQL写存储过程(mysql也可以写存储过程),但是pg还可以使用各种主流开发语言的语法写存储过程。

4、上面的这些有点可以大大的节约开发资源。很多开发人员再pg上做开发时候,发现数据库已经帮自己实现了很多功能,甚至一些业务功能都可以直接使用数据库的功能解决,不再需要写代码来实现了。

5、性能优化工具丰富:pg中有大量的性能视图,可以方便的定位问题(如:可以看到正在执行的sql。可以通过锁示图看到谁在等待、那条记录被锁定等)

6、在线操作功能好:pg增加空值的列时本质上知识再系统表上把列定义上,无需对物理结构做更新,这就让pg在加列时可以做到瞬时完成。即物理操作(系统表)+逻辑操作

7、pg还支持在线建索引的功能,建索引的过程可以不锁更新操作。

8、pg支持同步复制功能,可以通过master和slave之间的复制实现零数据丢失的高可用方案。

总结

如果仅仅把数据库作为一个简单的存储功能使用(如一些大型互联网公司),一些复杂的功能都想放在应用中来实现,那么选择mysql很合适。如果应用的数据访问简单(如大多数的blog系统)那么后端使用mysql也很合适。

如果应用不简单,又不想消耗太多的开发资源,pg合适。使用python+postgresql架构,几十人就可以支持整个公司的业务。在数据库中使用pg,就像在开发语言中使用python,会让工作变得简洁高效。

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

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

相关文章

【堆】Leetcode 373. 查找和最小的 K 对数字【中等】

查找和最小的 K 对数字 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。 示例 1: 输入: …

C++中的中介者模式

目录 中介者模式(Mediator Pattern) 实际应用 聊天室 空中交通管制系统 智能家居控制系统 总结 中介者模式(Mediator Pattern) 中介者模式是一种行为型设计模式,它定义了一个对象来封装一系列对象之间的交互。通…

02 Pytorch_NLP

1. N-gram n决定关联信息 2. TF____IDF TF:词频 IDF:逆向序列 假如:TF * IDF 就是当前的文件,那么乘积反而更大! 因为它只出现在 特定的文章中! TF-IDF 简介 TF-IDF(Term Frequency-Inverse…

css入门基础

目录 1. CSS前景 2.什么是CSS 3.CSS发展史 4.CSS的3种样式格式 5.CSS 的语法 6.CSS的字体样式 7.选择器类型 8.CSS外观属性 1. CSS前景 从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只…

专业学习|博弈论-博弈论概述

(一)认识博弈论:解析复杂决策与策略 (1)认识博弈 博弈论广泛应用于分析个体间因利益冲突而产生的决策问题。通过构建不同模型来探讨如经贸关系、军事威胁等问题,旨在寻找均衡解并提供新知,相较…

mathematical-expression-cpp | C++ 数学表达式解析库

数学表达式-cpp Switch to English Document 介绍 本框架是一种针对数学公式解析的有效工具,能够通过C的API解析包含嵌套函数,包含函数,数列步长累加等数学公式,返回值是一个数值的结果对象,同时也可以进行比较运算…

idea在空工程中添加新模块并测试的步骤

ServicesTest是空的工程,没有pom文件。现在需要在ServicesTest目录下添加新模块作为新的工程,目的是写一下别的技术功能。 原先目录结构,ServicesTest是空的工程,没有pom文件。下面的几个模块是新的工程,相互独立。 1.…

LLM大模型的挑战与未来,挑战大但是机遇更大!

大模型必然是未来很长一段时间我们工作生活的一部分,而对于这样一个与我们生活高度同频互动的“大家伙”,除了性能、效率、成本等问题外,大规模语言模型的安全问题几乎是大模型所面对的所有挑战之中的重中之重,机器幻觉是大模型目…

JAVA Spring WebSocket 实时消息

代码环境: jdk8, spring-boot1.5.22 依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.22.RELEASE</version><relativePath /> <…

C++ (week6、7):Linux系统编程4:网络

文章目录 四、网络和网络编程(一) 网络协议1.基础概念2.网络协议和网络模型&#xff1a;OSI七层模型、TCP/IP四层协议3.TCP协议(1)TCP协议的特点(2)TCP协议的首部格式(3)TCP状态图(4)为什么要三次握手&#xff1f;2次行不行&#xff1f;(5)为什么要四次挥手&#xff1f;(6)快速…

软件测试分类介绍

大家好&#xff0c;软件测试是确保软件质量的关键环节之一&#xff0c;通过对软件系统的各个方面进行测试&#xff0c;可以发现和解决潜在的问题&#xff0c;提高软件的稳定性、可靠性和用户满意度。在软件测试领域&#xff0c;根据测试的目的、方法和对象的不同&#xff0c;可…

什么是BMS?电池管理系统(BMS)到底在管理哪些东西?

BMS是电池管理系统&#xff08;Battery Management System&#xff09;的缩写。 它是一种用于管理和监控电池组的系统&#xff0c;通过监测电池状态、控制充放电过程、保护电池安全等功能&#xff0c;确保电池组的安全、稳定和高效运行。 BMS通常应用于电动汽车、储能系统、航…

Python业务规则引擎库之rules使用详解

概要 在软件开发中,业务规则引擎是一种重要的工具,可以帮助开发者将复杂的业务逻辑从代码中解耦出来,并以更直观的方式进行管理和维护。rules 是一个轻量级的 Python 库,专门用于定义和执行业务规则。它提供了一种简洁且强大的方式来管理应用程序中的规则逻辑,使代码更加…

C++ 引用 - 引用的特点|在优化程序上的作用

引用是C 的一个别名机制&#xff0c;所谓别名&#xff0c;就是同一块内存共用多个名字&#xff0c;每个名字都指的是这片空间&#xff0c;通过这些别名都能访问到同样的一块空间。 就像鲁迅和周树人是同一个人。 ——鲁迅 一、引用的基本用法 int a 10; int& ref a; // …

Kafka之ISR机制的理解

文章目录 Kafka的基本概念什么是ISRISR的维护机制ISR的作用ISR相关配置参数同步过程示例代码总结 Kafka中的ISR&#xff08;In-Sync Replicas同步副本&#xff09;机制是确保数据高可用性和一致性的核心组件。 Kafka的基本概念 在Kafka中&#xff0c;数据被组织成主题&#xf…

巴中青少年编程:开启未来科技的无限可能

巴中青少年编程&#xff1a;开启未来科技的无限可能 在数字化时代&#xff0c;编程已成为一项重要的技能&#xff0c;而巴中的青少年们正积极投身其中&#xff0c;探索编程的奥秘。那么&#xff0c;巴中青少年编程究竟有什么用处呢&#xff1f;本文将从四个方面、五个方面、六…

Django序列化器详解:普通序列化器与模型序列化器的选择与运用

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…

充电桩出口:跨国贸易的机遇与挑战之旅

在新能源浪潮席卷全球的今天&#xff0c;充电桩作为电动汽车的“加油站”&#xff0c;正逐渐从幕后走向台前。 而在这场跨国贸易的舞台上&#xff0c;充电桩的出口之路&#xff0c;既充满了诱人的机遇&#xff0c;也伴随着不小的挑战。 机遇&#xff0c;源自日益增长的全球市场…

免费听歌,电脑或手机免费听歌,落雪音乐安装详细步骤

近年来&#xff0c;由于资本的力量导致各种收费&#xff0c;看个电视想听歌都必须要付费了&#xff0c;否则你听不完整&#xff0c;吃相非常难看&#xff0c;特别是电视&#xff0c;吸血鬼式吸收各种会员费&#xff0c;各种APP也是铺天盖地的广告&#xff0c;渐渐迷失了自我&am…