我有以下问题:我正在设计带有几十个小型查找表的 Web 应用程序:这些表通常包含三列(ID、名称、描述)和几行(大多少于 50 行,最多约为 450 行)。

这些查找表预计只会很少更改(它们来自标准,几年更改一次),并且仅用于:

  • 在 html select 中填写选项
  • 与报告中的其他记录合并

只会有 SELECT 这些表上的语句 99% 的次数,但数量会相当多。

我想知道,哪种数据库引擎使用起来最有效?

以下是我的考虑:

记忆

  • 亲:非常快
  • 缺点:如果服务器崩溃,所有数据都会丢失并且需要重新创建
  • 缺点:不支持外键

压缩MyISAM

  • 亲:快速地
  • 缺点:不支持外键

数据库

  • 亲:外键支持

我想问的是,使用不同的东西是否会有显着的优势 数据库 - 性能方面

谢谢,兹宾内克

有帮助吗?

解决方案

我在2011年8月回答过类似的问题: 哪种 DBMS 适合超快速读取和简单的数据结构?

既然你问的是MySQL以及哪个存储引擎。老实说,这很难说,因为在 SELECT 方面,MyISAM 很少能胜过 InnoDB。

这是我过去关于这一争议的一些帖子

您现在可能会问:为什么我会更喜欢 MyISAM 而不是 InnoDB?

看看这个图表(由 Percona 首席技术官 Vadim Tkachenko 创建)

InnoDB Architecture

MyISAM 将缓存索引,并且您的表将有 2 个索引(id 上的主键和 Name 索引)。另一方面,InnoDB 有太多的移动部件需要容纳,特别是当 InnoDB 缓冲池必须定期加载和释放 16K 页时。

公平地说,你应该做一个实验。

这将为您的数据集的存储引擎选择提供最佳评估。

试一试 !!!

其他提示

  • “压缩的 MyISAM”——那是什么?也许“存档”?
  • 不需要压缩;表太小,很快就会被完全缓存。
  • FOREIGN KEYS - 为什么?您已经调试了代码,不是吗?不会有任何悬挂的东西需要检查。
  • MEMORY 并非没有道理, 如果 您编写“重新加载”代码,每当您启动服务器时都会执行该代码,并且对表的任何更新都会写入到 MEMORY 表和持久备份。
  • MyISAM ROW_FORMAT=FIXED ——那是老太太的故事;使用 DYNAMICVARCHARs.
  • InnoDB的“集群” PRIMARY KEY 出于您的目的,查找速度比 MyISAM 快一些。
  • 知道 查找表导致速度明显减慢?我严重怀疑他们是这样的。
  • 不是 使用查找表来查找“连续”值,例如 FLOATsDATEs.

我投票支持没有 FK 的 InnoDB。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top