gpt4 book ai didi

MySQL - InnoDB 或 MyISAM - 只读表

转载 作者:行者123 更新时间:2023-11-29 02:04:17 24 4
gpt4 key购买 nike

我有一个包含 48 个表的数据库,其中 45 个表是 InnoDB。

我有 3 个 MyISAM 表,大小从 200 条记录到 150 万条记录不等,还有 650 万条记录。

这 3 个表包含 GEO 位置信息并且是只读的(从不写入 - 除非我要更新一个 - 极少)。

我考虑将它们更改为 InnoDB 以使数据库 100% 相同,但后来读取 MYiSAM 更快。注意:我不需要任何特殊的 INNODB 函数——它只是选择/连接……就是这样。

我应该保留这些 MyISAM 还是将它们更改为 InnoDB?

谢谢

最佳答案

MyISAM 几年前速度更快,但如果您使用任何当前版本的 InnoDB,那么 InnoDB 对于大多数工作负载来说速度更快。这是 2007 年的一次性能比较,显示 InnoDB 在除了少数类型的查询之外的所有查询中已经匹配或优于 MyISAM。

http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

自 2007 年的那次测试以来,InnoDB 不断变得更好,而 MySQL 开发人员几乎没有花时间改进 MyISAM。它死了,吉姆。

MyISAM 可能更快的唯一情况是在进行全表扫描时,无论如何你应该尝试定义索引以避免表扫描。

自 5.5(大约 2010 年)以来,InnoDB 一直是 MySQL 中的默认存储引擎。随着 MySQL 的每个主要版本,MyISAM 的消失变得更加明显。

即使您不使用事务或外键等显式功能,InnoDB 也有很多好处。试试这个:

  1. 对 MyISAM 表执行长时间运行的更新。
  2. 中途打断它。更改了多少行?一些,但不是全部。
  3. 对 InnoDB 表重复相同的测试。更改了多少行? 零!

InnoDB 支持原子 更改,因此每个 SQL 语句要么完全成功,要么回滚。您不会得到部分完成的更改。

InnoDB 还支持崩溃恢复,因此即使 mysqld 崩溃,您也不会丢失数据。 MyISAM 以在崩溃期间损坏表而闻名。

InnoDB 还在 RAM(InnoDB 缓冲池)中缓存数据,而 MyISAM 依靠文件系统缓存来加速数据 I/O。如果您有足够的 RAM,这会使 InnoDB 中的某些查询更快。

仅当您不关心数据时才使用 MyISAM。

关于MySQL - InnoDB 或 MyISAM - 只读表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236542/

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