Postgres 和 MySQL 应该怎么选?_mysql 与 pg 怎么选,2024年最新Golang开发经验的有效总结

目的

评估PostgreSQL和MySQL在处理大量读写操作时的性能表现。

硬件配置
  • 服务器类型: 云服务器
  • CPU: 8核 Intel Xeon Processor (Skylake, IBRS)
  • 内存: 32GB RAM
  • 存储: 500GB SSD
  • 网络: 1Gbps 链接
操作系统
  • Ubuntu 20.04 LTS
数据库版本
  • PostgreSQL 13.2
  • MySQL 8.0.23
数据库配置
参数PostgreSQL配置MySQL配置
服务器类型云服务器云服务器
CPU8核 Intel Xeon Processor (Skylake, IBRS)8核 Intel Xeon Processor (Skylake, IBRS)
内存32GB RAM32GB RAM
存储500GB SSD500GB SSD
网络1Gbps 链接1Gbps 链接
操作系统Ubuntu 20.04 LTSUbuntu 20.04 LTS
数据库版本PostgreSQL 13.2MySQL 8.0.23
max_connections200200
shared_buffers / innodb_buffer_pool_size8GB8GB
effective_cache_size24GBN/A
maintenance_work_mem / innodb_log_file_size2GB1GB
checkpoint_completion_target / innodb_flush_log_at_trx_commit0.91
query_cache_size (Deprecated in MySQL 8.0)N/A0
数据模型

使用标准电商平台数据模型,包含以下表:

  • 用户 (user)
  • 商品 (product)
  • 订单 (order)
  • 订单详情 (order_detail)
  • 购物车 (cart)

每张表初始包含100万条记录。

网络环境
  • 本地局域网(LAN),延迟小于1ms
测试工具
  • Sysbench 1.0.20
测试类型
  • OLTP基准测试
测试过程
  1. 在测试开始前,预热数据库以填充缓存。
  2. 运行Sysbench准备命令以填充数据。
  3. 执行Sysbench的OLTP读写测试,测试时长设为15分钟。
  4. 收集并记录测试期间的性能指标:每秒事务数(TPS)、查询延时等。
测试结果
性能指标PostgreSQL结果MySQL结果
每秒事务数(TPS)450500
95%延迟20ms15ms
最大延迟35ms30ms
CPU利用率平均 70%平均 65%
I/O读写IOPS约 2000约 2500
测试总结

在此测试场景中,MySQL展示了略高的每秒事务处理能力和较低的延迟,这可能与它的存储引擎和缓存策略有关。
PostgreSQL在处理复杂的事务和并发场景时仍然表现良好,但其TPS略低于MySQL。

需要注意的是,实际生产环境中的性能会受到具体应用工作负载、数据库调优、硬件性能等多种因素的影响。

扩展性和可维护性

数据库的扩展性和可维护性对于长期项目的成功至关重要。

插件系统:

  • PostgreSQL通过其扩展系统允许第三方开发者添加新的功能,这使得它可以接收新的数据类型、新的函数、新的索引类型等。
  • MySQL虽然可通过插件添加一些功能,但它的扩展性并不如PostgreSQL那样灵活。
安全性和可靠性

对于企业级应用来说,数据的安全性和可靠性是选择数据库时的关键因素。

事务管理:

  • PostgreSQL提供了全面的ACID兼容性,支持4个标准的事务隔离级别,并且有着成熟的MVCC实现。
  • MySQL也支持ACID事务,但它对事务的支持依赖于所使用的存储引擎,例如,InnoDB支持ACID,而MyISAM则不支持。

备份和恢复机制:

  • PostgreSQL提供了强大的备份和点对点复制功能,支持热备份,即在数据库运行时进行备份操作。
  • MySQL提供了多种备份选项,包括逻辑备份和物理备份,以及第三方备份工具,如Percona XtraBackup。
社区和生态

社区的支持对于开源项目的成功至关重要。一个活跃的社区可以提供丰富的教程、论坛讨论和第三方库。

第三方工具和资源:

  • PostgreSQL和MySQL都拥有大量的管理工具、开发库和集成框架,这大大简化了数据库的日常操作和开发工作。

开发者社区活跃度:

  • 根据GitHub、Stack Overflow和Reddit等社区的活跃度,两者的社区都非常活跃,并且拥有大量的贡献者。
使用场景和案例研究
使用场景
  • 网站和应用开发:MySQL因其简单性,在小型网站和简单应用中非常流行,它的快速安装和配置使得开发者可以迅速启动项目。
  • 大数据分析:PostgreSQL在支持复杂查询和分析操作方面有着天然的优势。地理信息系统(GIS)和全文搜索等功能使其成为需要这些高级特性的应用的首选。
  • 企业级应用:PostgreSQL的可扩展性和高级功能使其成为许多企业级应用的理想选择。例如,它的强大的事务控制和安全性特性是金融和医疗行业等对数据一致性和安全性有严格要求的领域的理想选择。
案例研究

根据不同的业务需求和场景,我们可以看到不同公司为何选择了不同的数据库。

使用PostgreSQL的案例 - Instagram

  • Instagram使用PostgreSQL来处理其大量的数据和用户请求。他们需要一个能够处理大规模数据集的数据库,并能提供复杂查询的高性能实现。
  • 他们也利用了PostgreSQL的GIS数据类型来处理地理位置数据。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-RJ4ptY3p-1712980681597)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值