gpt4 book ai didi

mysql - 将现有表从 MyISAM 移动到 InnoDB,哪个更快?

转载 作者:行者123 更新时间:2023-11-29 01:30:19 26 4
gpt4 key购买 nike

一个数据库已经有多达 25-30 个表并且都是 MyISAM。大多数这些表彼此相关,这意味着很多查询使用 ID 连接和检索数据。

其中一个表包含 7-10 百万 记录,如果我想执行搜索或更新甚至检索所有数据,它会变得很慢。现在我向我的老板提出了一个解决方案,说将表转换为 InnoDB 可能会提供更好的性能。

我还解释了 InnoDB 的好处:

  1. 既然我们无论如何都在键上连接多个表并且它们是相关的,那么最好使用外键和关系数据库来避免孤立行。我在其中一张大表中发现了大约 10-15k 孤立行,不得不手动删除它们。

  2. 支持事务,我们不时执行大更新,如果其中一个在途中失败,我们必须用备份的表替换整个表并再次运行更新以确保所有查询已执行。使用 InnoDB,如果查询 2 失败,我们可以恢复查询 1 的任何更改。

现在我从老板那里得到的回应是我需要证明 InnoDB 会比 MyISAM 运行得更快。我的问题是,以上两点不会通过消除孤立行来提高应用程序本身的速度吗?

一般来说 MyISAM 比 InnoDB 快吗?

注意:使用MySQL 5.5

最佳答案

您还应该向您的老板提及,对于具有读/写负载的大型表,您从 InnoDB 中获得的最大好处可能是 - 您获得行级锁定而不是表级锁定。如果您看到大量等待表锁被释放的情况,这对应用程序来说可能是一个巨大的性能优势。

当然,说服老板的最好方法就是证明这一点。制作大表的副本并将其放在测试数据库中。在 MyISAM 中制作一个版本的数据,在 InnoDB 中制作一个版本。然后使用近似于当前数据库读/写事件的负载组合对其运行负载测试。自己看看是否更好。

刚刚更新您的评论,您使用的是 5.5。在 5.5 中,使用 InnoDB 是轻而易举的事。 MyISAM 引擎在过去几年中基本上没有看到任何改进,并且开发工作一直围绕着 InnoDB。 InnoDB 是 future 的首选 MySQL 引擎。

关于mysql - 将现有表从 MyISAM 移动到 InnoDB,哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15620322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com