“COUNT(*) MyISAM比InnoDB更快”是误解

简介: 在我印象中,MyISAM的查询速度比InnoDB快,但根据MySQL官网文章,从5.7版本开始,InnoDB性能大幅提升,在8.0中持续优化。InnoDB提供更好的性能、可靠性和可扩展性,支持ACID事务、行级锁定、崩溃恢复等特性,成为现代应用的默认选择。尤其在高可用性和灾难恢复方面,InnoDB是唯一选择。云服务也普遍不支持MyISAM。因此,建议使用MyISAM的用户尽早迁移到InnoDB以获得更佳性能和可靠性。

在我的印象里MyISAM查询的速度是比InnoDB快的,但最近在mysql官网看到一篇关于InnoDB与MyIsam相关的文章。

原文链接:https://blogs.oracle.com/mysql/post/still-using-myisam-it-is-time-to-switch-to-innodb


添加图片注释,不超过 140 字(可选)


文章是这位大神写的,弗雷德里克·德斯坎普斯(MySQL社区经理)他从事开源和 MySQL 咨询工作已有近 20 年。


添加图片注释,不超过 140 字(可选)


大概的意思:

从 MyISAM 迁移到 InnoDB 为您的 MySQL 数据库带来了显著的好处。InnoDB 提供更好的性能、可靠性和可扩展性,使其成为现代应用程序的默认选择。如果您关心您的数据并计划使用高可用性和灾难恢复,InnoDB 是唯一可能的选择。

中心思想:

  • 从5.7开始,InnoDB更快
  • 在8.0中InnoDB性能不断提高
  • InnoDB 中整个事务层得到了极大的改进
  • 原本临时表MyISAM 更好,在8中磁盘内部临时表只支持InnoDB
  • 原本批量加载时MyISAM的性能优于InnoDB,禁用 InnoDB持久性后InnoDB更快
  • 原本COUNT(*)MyISAM 的速度更快,现在情况已不再如此。在多核环境下InnoDB更快
  • 从MySQL 5.6开始,InnoDB 支持全文搜索 (FTS),从那时起它的扩展能力比MyISAM好3倍
  • 云管理的MySQL服务均不包含MyISAM。Oracle云基础设施中的MySQL数据库服务也是如此。

最终结论:

如果你还在使用MyISAM,那么是时候考虑迁移到 InnoDB 了


也就是InnoDB性能上比较MyISAM更快,同时文中也给出来相关的性能测试证明:


添加图片注释,不超过 140 字(可选)



接下来我们来研究一下:

一、默认引擎

InnoDB自5.5版(2010年7月)以来一直是MySQL的默认存储引擎。

MySQL支持多种存储引擎,如支持事务和行级锁定的InnoDB(默认)、早期默认的不支持事务但访问速度快的MyISAM、内存存储的Memory引擎、逗号分隔符文本存储的CSV引擎、MySQL集群专用的NDB引擎等。不同的存储引擎在事务支持、锁机制、数据存储方式等方面有所差异,用户可根据应用场景的需求来选择合适的存储引擎。

二、InnoDB vs MyISAM

与 MyISAM 相比,InnoDB 具有以下几个优点:

  • MVCC,
  • 支持 ACID 事务,
  • 行级锁定,
  • 崩溃恢复能力,
  • 外键,
  • 热备份,
  • 克隆

1、性能

总的来说,如果我们比较性能,从5.7开始,InnoDB更快,并且在8.0中InnoDB性能不断提高。

以前,在我们添加并行执行之前,COUNT(*)MyISAM 的速度更快。现在情况已不再如此。

InnoDB 的设计目的是利用多核 CPU,这意味着它可以使用多个核心进行并行处理,并在现代硬件上获得更好的性能。

p.s.这一条我们后面详细说明。

2、全文搜索

从 MySQL 5.6 开始,InnoDB 支持全文搜索 (FTS),从那时起,它的扩展能力比 MyISAM 好 3 倍。当然,在 MySQL 8.0 中,我们继续支持InnoDB FTS,并支持 CJK、ngram、mecab。

3、高可用性

MySQL InnoDB Cluster(用于HA)和InnoDB CluserSet(用于DR),都基于组复制并且需要InnoDB。

如果您正在寻找真正的高可用性和/或灾难恢复解决方案,MyISAM 根本不是一个选择。

4、云

云管理的 MySQL 服务均不包含 MyISAM。 Oracle 云基础设施中的 MySQL 数据库服务也是如此。


三、使用性能

前面都有讲到InnoDB在性能上有很大的提升,我看来看看这位DimitriK的测试报告。

DimitriK是一位专注于MySQL性能的专家,他在自己的博客上发布了许多关于MySQL性能优化、基准测试和内部工作原理的文章。他的全名是Dimitri Kravtchuk,在MySQL社区中非常活跃,经常分享深入的技术见解和实用的性能调优技巧。如果您对MySQL的性能优化感兴趣,DimitriK的博客是一个很好的资源。

测试环境

  • HW config : 32cores-HT server (exactly the same I've used 3 years ago) and a newer 40cores-HT server (to observe a tendency)
  • OS : the same Oracle Linux 6.5
  • Test workloads :
  • load level : 8, 16, 32, .. 1024 concurrent user sessions
  • test cases: Sysbench OLTP_RO, RO Simple-Ranges, RO Distinct-Ranges, RO Point-Selects
  • datasets : single table with 10M rows, 8 tables with 1M rows each

测试服务器配置:

  • 32核心HT服务器 (与3年前使用的配置相同)
  • 40核心HT服务器 (观察性能趋势)

操作系统:

  • Oracle Linux 6.5

测试工作负载:

  • 并发用户会话数量: 8、16、32...1024
  • 测试用例: Sysbench OLTP_RO、RO Simple-Ranges、RO Distinct-Ranges、RO Point-Selects
  • 数据集: 单表1000万行、8个表各100万行



添加图片注释,不超过 140 字(可选)


详细报告可以参见:

http://dimitrik.free.fr/blog/archives/2015/12/mysql-performance-revisiting-innodb-vs-myisam-with-mysql-57.html

测试报告:

  1. MySQL 5.7中,InnoDB和MyISAM存储引擎在相同的工作负载和硬件环境下,性能都比之前有所提升。
  2. 40核心HT服务器的测试结果比32核心HT服务器的结果表现更好。
  3. 在最关键的Point-Select工作负载测试中,MyISAM只比InnoDB快一点点。这很容易理解,因为InnoDB支持事务,即使代码在可扩展性方面已经有了重大改进,事务开销依然存在。但这已经不是临时修复,而是经过重新设计的生产就绪代码。
  4. 在其他所有工作负载测试中,InnoDB的表现都比MyISAM更好。
  5. 对于使用单表的所有测试,InnoDB的速度都远远快于MyISAM,即使是Point-Select测试。

总的来说,MySQL 5.7对InnoDB和MyISAM存储引擎都进行了优化,提升了性能,特别是InnoDB在多数情况下的表现更加优秀。硬件配置也对性能有明显影响。

四、总结

从MyISAM迁移到InnoDB为MySQL数据库带来了巨大的好处。InnoDB提供了更好的性能、可靠性和可扩展性,使其成为现代应用程序的默认选择。如果您关心数据完整性并计划使用高可用性和灾难恢复功能,InnoDB是唯一可能的选择。

通过利用InnoDB的强大功能,如ACID事务支持、行级锁定、崩溃恢复、多线程并行处理等,您可以构建更加健壮和高效的应用程序。尽管迁移过程可能需要一些努力,但最终结果将使您的数据库更加可靠和高性能,为您的业务增加价值。

目录
相关文章
|
2天前
|
调度 云计算 芯片
云超算技术跃进,阿里云牵头制定我国首个云超算国家标准
近日,由阿里云联合中国电子技术标准化研究院主导制定的首个云超算国家标准已完成报批,不久后将正式批准发布。标准规定了云超算服务涉及的云计算基础资源、资源管理、运行和调度等方面的技术要求,为云超算服务产品的设计、实现、应用和选型提供指导,为云超算在HPC应用和用户的大范围采用奠定了基础。
|
9天前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
11天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
8875 20
|
15天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
4769 12
资料合集|Flink Forward Asia 2024 上海站
|
15天前
|
自然语言处理 数据可视化 API
Qwen系列模型+GraphRAG/LightRAG/Kotaemon从0开始构建中医方剂大模型知识图谱问答
本文详细记录了作者在短时间内尝试构建中医药知识图谱的过程,涵盖了GraphRAG、LightRAG和Kotaemon三种图RAG架构的对比与应用。通过实际操作,作者不仅展示了如何利用这些工具构建知识图谱,还指出了每种工具的优势和局限性。尽管初步构建的知识图谱在数据处理、实体识别和关系抽取等方面存在不足,但为后续的优化和改进提供了宝贵的经验和方向。此外,文章强调了知识图谱构建不仅仅是技术问题,还需要深入整合领域知识和满足用户需求,体现了跨学科合作的重要性。
|
23天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
11天前
|
人工智能 容器
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
本文介绍了如何利用千问开发一款情侣刮刮乐小游戏,通过三步简单指令实现从单个功能到整体框架,再到多端优化的过程,旨在为生活增添乐趣,促进情感交流。在线体验地址已提供,鼓励读者动手尝试,探索编程与AI结合的无限可能。
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
|
10天前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
877 58

热门文章

最新文章