MySQL与PostgreSQL对比
MySQL | PostgreSQL | |
---|---|---|
数据类型支持 | 支持JSON,但不如PostgreSQL | 支持更多的数据类型,如数组、hstore、JSON、JSONB、范围类型等 |
扩展性 | 有一些扩展性,但不如PostgreSQL | 支持自定义数据类型、函数、操作符,具有强大的扩展性 |
SQL兼容性 | 遵循SQL标准,但有一些自定义扩展 | 更接近ANSI SQL标准,支持窗口函数、公共表表达式等 |
性能优化 | 对简单查询进行了优化,特别是读密集型摸作 | 有一个复杂的查询优化器,对于复杂查询很有优势 |
外部连接 | 有限的外部连接支持 | 支持外部表、外部连接,可以与其他数据周或数据源进行连接 |
程序语言支持 | 主要支持SQL和JavaScript,通过MySQL Shell支持Python | 支持多补存储过程语言,如PL/pgSQL、PL/TCl、PL/Python等 |
地理信息系统 | 有空间扩展,但不如PostGIS强大 | 通过PostGIS扩展提供强大的GIS支持 |
复制和分区 | 支持基于二进制日志的复制,也支持表分区 | 支持逻辑复制、表分区、双向复制等 |
学习曲线 | 由于其广没的使用和丰富的社区资源,相对容易上手 | 对于初学者可能稍微陡峭一些,特别是在高级特性和优化方面 |
市场份额 | 在Web应用领域有很大的市场份频,被广泛采用 | 在企业级应用和特定领域(如GIS)中堂欢迎,但在小型Web应用中的市场份额较小 |
管理工具 | 有丰宫的管理工具,如MySQL Workbench,以及大量的第三方工具 | 尽等有–些第三方工具,但可能不如MySOL丰富 |
维护团队 | MySQL的背后是一个成熟的商业公司,使得MySQL的开发过程更为慎重 | PostgreSQL的背后是一个庞大的志愿开发组,PostgreSQL的反应更为迅速 |
MVCC | MySQL采用了一种基于“回滚段”的方法来保存元组的历史版本(前像),如果事务更新了一条元组,它可以“原地”更新这条元组(新元组的 Size 需要小于等于旧元组的 Size),历史元组会以 Undo 日志记录的形式保存到回滚段中,这样就实现了元组的原地更新(Inplace Update)。当有并发事务需要访问历史元组时,可以从回滚段中“回滚”出这条元组,如果事务异常终止,则可以利用 Undo 日志将数据恢复。当所有可能访问历史元组的事务全部结束后,Undo 日志中的历史元组就可以被清理。由于 Undo 日志被集中存储到某一个回滚段,所以清理也较为便捷。 | PostgreSQL 将历史元组和最新元组都保存在 Heap 表中,这种方式的好处是无须做回滚操作,如果一个写事务异常终止,则其他事务将无法读到这条元组。此方法虽然可以避免事务回滚带来的消耗,但仍被广为诟病。假设一个事务不停地更新数据,那么一条元组就会产生大量的历史版本。其他事务在访问时需要查看这些元组是否满足可见性要求,这会增加读操作的时延,降低数据扫描的效率。为了防止数据膨胀,PostgreSQL 数据库采用 Vacuum 机制清理表中的无效元组。如果使用 Vacuum FULL 命令,则还会负责对所有的元组进行搬迁,避免清理页面的过程中产生大量的“空洞”。 |
进程模型 | 多线程优点:▶︎ 资源效率:线程共享相同的内存空间,这通常导致更低的内存使用和更快的上下文切换。▶︎ 高并发性:多线程模型通常能够更好地处理高并发情况,尤其是在多核 CPU 上。▶︎ 线程间通信:线程间通信通常比进程间通信更简单和更快。适合短暂任务:对于短暂的、需要快速响应的任务,多线程模型可能更为合适。缺点:▶︎ 稳定性问题:一个线程的问题可能会影响到同一进程中的其他线程。例如,一个线程导致的内存泄可能会影响整个进程。▶︎ 复杂的同步:在多线程环境中,数据同步和锁定可能会变得更加复杂。全局变量和静态变量:由于线程共享内存,全局变量和静态变量的使用可能会导致问题。 | PostgreSQL 采用多进程优点:▶︎ 稳定性:由于每个连接都有自己的进程,一个进程崩溃不太可能影响其他进程。这为系统提供了额外的稳定性。▶︎ 内存隔离:每个进程都有自己的内存空间,这可以减少内存泄漏或其他问题对整个系统的影响。▶︎ 开发简单性:多进程模型在某些情况下可能更容易开发和维护。缺点:▶︎ 资源开销:进程通常比线程需要更多的资源。每个进程都有自己的内存空间,这可能导致更的内存使用。▶︎ 上下文切换:进程之间的上下文切换可能比线程之间的上下文切换更加昂贵。▶︎ 进程间通信:进程间通信(IPC)可能比线程间通信更复杂和开销更大。 |
数据结构 | 索引组织表:数据直接存储在主键索引的叶子节点中,这意味着表数据按主键的顺序存储。由于数据与主键索引紧密结合,所以通常可以更快地访问基于主键的查询。优点:▶︎ 查询性能:由于数据是按键值排序的,范围查询和某些类型的查找可以更快。▶︎ 空间效率:通常使用较少的磁盘空间,因为它们减少了数据的冗余和碎片。▶︎ 数据完整性:由于数据是按键值存储的,这可以确保数据的完整性和一致性。 | 堆表:数据存储在一个称为"堆"的无序结构中。索引存储指向堆中行的指针(CTID),而不是实际的行数据。优点:▶︎ 简单性:堆表是最基本的表结构,不需要特定的排序或组织。▶︎ 快速插入:数据可以迅速地添加到表的末尾,不需要重新排序或调整数据。▶︎ 灵活性:可以轻松地添加或删除索引,而不影响表的基本结构。缺点:▶︎ 查询速度:由于数据没有特定的组织方式,查询可能需要全表扫描,尤其是在没有索引的情况下。▶︎ 空间使用:可能会有更多的碎片,因为删除的行可能不会立即被回收,需要额外的操作如表重组来回收空间。 |
开源协议 | MySQL 采用 GPLv2 是一个“传染性”的开源许可证,这意味着任何基于 GPLv2 许可的代码进行修改或扩展,并且要分发的派生作品,也必须在 GPLv2 下发布。这确保了软件的自由性,但也可能限制了与非 GPL 软件的集成。 | PostgreSQL License 是一个宽松的开源许可证,类似于 MIT 许可证。它允许用户自由使用、修改和分发,无需公开源代码。它也不强制任何特定的版权声明,这使得它与许多其他开源和专有许可证兼容。 |
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
MySQL与PostgreSQL对比
MySQLPostgreSQL数据类型支持支持JSON,但不如PostgreSQL支持更多的数据类型,如数组、hstore、JSON、JSONB、范围类型等扩展性有一些扩展性,但不如PostgreSQL支持自定义数据类型、函数、操作符,具有强大的扩展性SQL兼容性遵循SQL标…...
![](https://img-blog.csdnimg.cn/6f9a5396c0db45b7bde79a3a1336c72d.png)
AD拼板技巧
AD拼板设置 如图,有一个需要拼板的PCB,想要在生产是拼接生产,节省材料。 操作如下: 1、全选如下,按复制CtrlC。 2、把输入法调整至英文,按快捷键E(先), A(后…...
![](https://img-blog.csdnimg.cn/bc379e7dd5014212b760a5b7c5ea65b5.png)
Android滑动片段
本文所有的代码均存于 https://github.com/MADMAX110/BitsandPizzas 回到BitsandPizzas应用,之前已经创建过创建订单和发出反馈等功能。 修改披萨应用,让它使用标签页导航。在工具条下显示一组标签页,每个选项对应一个不同的标签页。用户单击…...
![](https://img-blog.csdnimg.cn/f6ee941f3b1a4f0790ee5c87e8ab0089.png)
【力扣-每日一题】337. 打家劫舍 III
class Solution { public:pair<int,int> dfs_rob(TreeNode *root){//如果为根节点if(rootnullptr)return {0,0};auto [l,l_n]dfs_rob(root->left);auto [r,r_n]dfs_rob(root->right);int ol_nr_nroot->val;//当前节点偷,所获得的利益,子节点不能偷in…...
![](https://www.ngui.cc/images/no-images.jpg)
Docker部署FastDFS分布式存储
1、准备工作 docker pull qinziteng/fastdfs:5.05 Pwd"/data/software/fastdfs" mkdir ${Pwd}/{storage,tracker} -p2、创建TEST容器,将fastdfs目录COPY到本地,方便后续维护管理! docker run -id --name fastdfs qinziteng/fastd…...
![](https://img-blog.csdnimg.cn/1cd52909ed844007a751c82d52b10299.jpeg#pic_center)
MyBatis基础之SqlSession
SqlSession 线程安全问题 当你翻看 SqlSession 的源码时,你会发现它只是一个接口。我们通过 MyBatis 操作数据库,实际上就是通过 SqlSession 获取一个 JDBC 链接,然后操作数据库。 SqlSession 接口有 3 个实现类: #实现类1Defa…...
![](https://img-blog.csdnimg.cn/2547452a0db641a48bba60f410f1ed6e.png)
笔记本电脑没有麦克风,声音无法找到输入设备
新买的电脑没有扬声器,电脑声音没有输入设备,在开腾讯会议的时候才发现竟然有这个问题。 网上找原因,哎,找了一大堆每一个靠谱的 这让我想起来上次电脑没有热键的问题,所有问题的终极解决方案,都在源头那里…...
![](https://img-blog.csdnimg.cn/687b62f1944c46a6b89bdf9c94acc3dc.png)
MySQL基础—从零开始学习MySQL
01.MySQL课程介绍_哔哩哔哩_bilibili 1、MySQL安装 以管理员身份运行cmd net start mysql80net stop mysql80 客户端连接 1). 方式一:使用MySQL提供的客户端命令行工具 2). 方式二:使用系统自带的命令行工具执行指令 mysql [-h 127.0.0.1] [-P 3…...
![](https://www.ngui.cc/images/no-images.jpg)
单例模式设计
目标: 1. 饿汉模式 2. 懒汉模式 3. 饿汉模式优化 目录 饿汉模式 懒汉模式 懒汉模式优化 饿汉模式 由名字我们就可以知道 "饿汉" 嘛,就比较急切,在类加载的时候就创建实例: 1. 写一个类,在本类中构造实…...
![](https://img-blog.csdnimg.cn/a7333d682bd546389e1aa1d57c02f110.png)
轻量型服务器能支撑多少人访问?
一、服务器配置影响访问人数 服务器的配置是影响轻量型服务器能够支撑的访问人数的关键因素之一。通常而言,轻量型服务器的配置普遍不高,适合小型团队或个人使用。如果服务器配置较低,那么支撑访问人数的能力也会受到限制。较为简单的应用程序…...
![](https://www.ngui.cc/images/no-images.jpg)
python: Sorting Algorithms
# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看:Python Sorting Algorithms # 描述: * https://www.programiz.com/dsa/counting-sort # * https://www.geeksforgeeks.org/sorting-algorithms/ # Author : geovindu,Geovin Du 涂…...
![](https://www.ngui.cc/images/no-images.jpg)
Python 安装js环境
在终端执行下面的命令 npm install jsdom jsdom 是一个实现了 DOM API 的 JavaScript 环境,用于在 Node.js 中模拟浏览器的 DOM 环境。execjs 使用 jsdom 这个模块来执行 JavaScript 代码。所以在你的系统中,需要先安装并配置好 jsdom 模块,…...
![](https://img-blog.csdnimg.cn/img_convert/5416073cb7ced283379fbc1fa48373c4.png)
2023华为杯数模C题——大规模创新类竞赛评审方案研究
B题——大规模创新类竞赛评审方案研究 思路:采用数据分析等手段改进评分算法性能 完成情况(1-2问已经完成) 代码下载 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比…...
人工神经网络ANN:数学总结
一、内容 径向基函数(Radial basis function,RBF):一个取值仅依赖于到原点距离的实值函数,即。此外,也可以按到某一中心点c的距离来定义,即。 可以用于许多向函基数的和来逼近某一给定的函数&a…...
![](https://img-blog.csdnimg.cn/7f8fe4dfa513446185349c651d494669.png)
RabbitMQ的工作模式——WorkQueues
1.工作队列模式 生产者代码 public class Producer_WorkQueues1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133&qu…...
![](https://www.ngui.cc/images/no-images.jpg)
AOJ 0531 坐标离散化
一、题目大意 在(0<x<w,0<y<h)的坐标系里有多个矩形,把区域分成了多个部分,我们需要针对找出被矩形分割的连通的区块数量。 二、解题思路 这个题目其实和学DFS时候那个找出连通的水洼是一样的。只是这个地图比较大,…...
![](https://img-blog.csdnimg.cn/0767976a5dfe460280c35be5a1623470.png)
Python —— pytest框架
1、认识pytest框架 1、搭建自动化框架的思路与流程 1、搭建自动化测试框架的思路和流程,任意测试手段流程都是一致的:手工测试、自动化测试、工具测试 手工测试:熟悉业务 —— 写用例 —— 执行用例并记录结果 —— 生成测试报告自动化测试…...
![](https://img-blog.csdnimg.cn/321c187d17fc46c2af39c041d1e14066.jpeg)
IP地址欺骗的危害与后果
IP地址欺骗,也被称为IP地址伪装或IP地址欺诈,是一种网络攻击技术,旨在伪装或隐藏攻击者的真实IP地址。尽管这种技术可能有一些合法的用途,例如保护用户的隐私或绕过地理位置限制,但它也经常被恶意黑客用于不法行为。本…...
![](https://img-blog.csdnimg.cn/f68d517149054be18b075ba2dc4af025.png#pic_center)
系统集成|第十章(笔记)
目录 第十章 质量管理10.1 项目质量管理概论10.2 主要过程10.2.1 规划质量管理10.2.2 实施质量保证10.2.3 质量控制 10.3 常见问题 上篇:第九章、成本管理 第十章 质量管理 10.1 项目质量管理概论 质量管理:指确定质量方针,质量目标和职责&a…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux之perf(7)配置
Linux之perf(7)配置类命令 Author:Onceday Date:2023年9月23日 漫漫长路,才刚刚开始… 注:该文档内容采用了GPT4.0生成的回答,部分文本准确率可能存在问题。 参考文档: Tutorial - Perf Wiki (kernel.org)perf(1)…...
![](https://img-blog.csdnimg.cn/b64b1c48e023404fbc8503e9c1b62121.gif)
14:00面试,14:06就出来了,问的问题过于变态了。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
![](https://img-blog.csdnimg.cn/03d25e9a407147fb8b4ee2a4a857e3e9.png)
JPA的注解@Field指定为Keyword失败,导致查询不到数据
一、背景 使用 jpa 对es操作,查询条件不生效,需求是批量查询课程编号。说白了,就是一个In集合的查询。在es里,如果是精准匹配是termQuery,比如: queryBuilder.filter(QueryBuilders.termQuery(“schoolId…...
![](https://img-blog.csdnimg.cn/img_convert/f919a76683b375993482a0fcf9c8c095.png)
多线程带来的的风险-线程安全
多线程带来的的风险-线程安全 ~~ 多线程编程中,最难的地方,也是一个最重要的地方,还是一个最容易出错的地方,更是一个面试中特别爱考的地方.❤️❤️❤️ 线程安全的概念 万恶之源,罪魁祸首是多线程的抢占式执行,带来的随机性.~~😕😕&…...
![](https://www.ngui.cc/images/no-images.jpg)
Kafka 面试题
Kafka 面试题 Q:讲一下Kafka。 Kafka 入门一篇文章就够了 Kafka的简单理解 Q:消息队列,有哪些使用场景及用途? 解耦,削峰,限流。 Q:Kafka相对其他消息队列,有什么特点? 持久化:Kafka的持久化…...
![](https://img-blog.csdnimg.cn/a98d457f69264d3a9b6b648c9f744bb3.png)
离线部署 python 3.x 版本
文章目录 离线部署 python 3.x 版本1. 下载版本2. 上传到服务器3. 解压并安装4. 新建软连信息5. 注意事项 离线部署 python 3.x 版本 1. 下载版本 python 各版本下载地址 本次使用版本 Python-3.7.0a2.tgz # linux 可使用 wget 下载之后上传到所需服务器 wget https://www.py…...
![](https://www.ngui.cc/images/no-images.jpg)
Java 获取豆瓣电影TOP250
对于爬虫,Java并不是最擅长的,但是也可以实现,此次主要用到的包有hutool和jsoup。 hutool是一个Java工具包,它简化了Java的各种API操作,包括文件操作、类型转换、HTTP、日期处理、JSON处理、加密解密等。它的目标是使…...
![](https://www.ngui.cc/images/no-images.jpg)
笔试面试相关记录(5)
(1)不包含重复字符的最长子串的长度 #include <iostream> #include <string> #include <map>using namespace std;int getMaxLength(string& s) {int len s.size();map<char, int> mp;int max_len 0;int left 0;int i …...
![](https://img-blog.csdnimg.cn/dd9496cd814944da973e685e3fa3a098.png)
四、C#—变量,表达式,运算符(2)
🌻🌻 目录 一、表达式1.1 什么是表达式1.2 表达式的基本组成 二、运算符2.1 算术运算符2.1.1 使用 / 运算符时的注意事项2.1.2 使用%运算符时的注意事项 2.2 赋值运算符2.2.1 简单赋值运算符2.2.2 复合赋值运算符 2.3 关系运算符2.4 逻辑运算符2.4.1 逻辑…...
![](https://img-blog.csdnimg.cn/fc505aa2036649b480e0f2fb29ab20dc.png)
【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
![](https://img-blog.csdnimg.cn/d033addc6d5141caa0c29fd27fcd9e7b.png)
JVM的内存分配及垃圾回收
内存分配 在了解Java的内存管理前,需要知道JVM中的内存分配。 栈 存储局部变量。在方法的定义中或在方法中声明的变量为局部变量;栈内存中的数据在该方法结束(返回或抛出异常或方法体运行到最后)时自动释放栈中存放的数据结构为…...
![](https://img-blog.csdnimg.cn/img_convert/20d4f7a689ed1e19eb7e128f7816186e.png)
微信公众号平台网站开发/网络推广策划方案模板
来源:toutiao.com/i69432395414489175121. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串1.2 比较两个字符串是否相等,忽略大小写1.3 比较两个对象是否相等1.4 两个List集合取交集2. apache commons工具类库2.1 commons-lang,java.l…...
![](https://img-blog.csdnimg.cn/915e2922bbd14ee58ac195b4f4b3d251.png)
html5响应式手机网站/百度官网入口
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …...
![](https://img-blog.csdnimg.cn/img_convert/63eea89446e9a978508926e40a7c0a9e.png)
asp网站报错信息/西安seo排名收费
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:安全员-C证考试内容根据新安全员-C证考试大纲要求,安全生产模拟考试一点通将安全员-C证模拟考试试题进行汇编,组成一套安全员-C证全真模拟考试试题…...
![](/images/no-images.jpg)
张雪峰谈广告学专业/seo是什么级别
现在经常要在网上查资料,查这个的时候,看到了另外一个新鲜的东西,结果想走迷宫一样,转来转去,等出来的时候发现早已远离了自己的主题.总结一点学习方法,供参考:1.先制定一个学习目标;2.针对该目标,提出10个关键问题;3.当在网上钻洞的时候&…...
展示型手机网站模板/资源搜索
• 描述使用ASM 的好处• 管理ASM 实例• 创建和删除ASM 磁盘组• 扩展ASM 磁盘组• 通过使用各种实用程序检索ASM 元数据Automatic Storage ManagementAutomatic Storage Management (ASM) 将文件系统与卷管理器纵向集成在一起,这是一项专门为Oracle DB 文件建立的…...
![](/images/no-images.jpg)
wordpress $show_date/友情链接交易购买
最近在做一个项目,其中用到了TabActivity,想截取OnKeyDown事件来提示用户退出程序在api lever 5以上有OnBackPressed重载函数,可以达到同样的效果。 但是我一直没有成功,调试程序发现,因为TabActivity压根没有获取我按…...