首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在大多数操作都是读取操作的地方,应该使用哪个MySQL引擎?

问在大多数操作都是读取操作的地方,应该使用哪个MySQL引擎?
EN

Database Administration用户
提问于 2013-06-18 05:25:14
回答 2查看 804关注 0票数 1

我想开发一个应用程序,我将需要一个数据库来存储数据。我使用MySQL作为后端。我的问题是Which MySQL engine should i use?

我已经提到了在db上执行的一些重要的操作特性:

  • 99.99%阅读操作。
  • 我不需要外键。
  • 我不需要交易。
  • 简单的读取操作和其他任何操作。

我知道InnoDB是MySQL中最新的default引擎。但是,就我所能得出的结论而言,我不需要使用InnoDB的主要原因的大多数特性。所以,现在我和MyISAM在一起了。

我正在考虑使用MyISAM,因为我只想从数据库中读取数据。我已经引用了存储引擎的官方文档,并搜索了它。但是,我的知识库可能还缺乏一些重要的更新。所以,我是在向社区寻求帮助。

是我在指定的场景中使用MyISAM存储引擎的选择?

在期待中感谢社区。

谢谢你帮我缩小了选择范围。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2013-06-18 11:30:04

尽管MyISAM与您的特性相匹配,但我建议您不要使用它,原因如下:

  • 完整性,MyISAM是非交易性的:是的,我知道你写了你不需要交易。问题是,对于MyISAM,甚至没有一个操作是“原子的”。您知道,在写过程中出现电源故障(您确实有0.01%的写操作),可能会损坏您的数据;现在,即使是单个行也有任何完整性。您不需要只为复杂的“分组多个查询”或“回滚到保存点”的事务。您需要事务来知道您的数据具有完整性。MyISAM没有这类东西。没有任何机制来保证您的数据。腐败可能会发生(而且会发生),或者你甚至不知道,或者你无法修复它。最近的是一个REPAIR TABLE,它最多可以修复您的表结构。我说如果你调查你的数据-- MyISAM是不允许的。
  • 缺乏开发:实际上没有人在改进代码。每个人都在忙着让InnoDB变得越来越好。这并不是说如果你选择MyISAM,你就会落后:你已经开始落后了。不要像对InnoDB那样快速地进行错误修复。
  • 很难做现场备份。为了对数据库进行实时备份,需要为整个操作在数据库上放置一个READ LOCK。对您来说可能不是这样的出价交易;您也可以使用复制并在从服务器上执行备份(但是由于缺乏完整性和主服务器上的错误恢复,使用MyISAM的复制再次变得不安全)。或者也可以使用LVM。
票数 2
EN

Database Administration用户

发布于 2013-06-18 07:40:59

MyISAM有一个缺点:并发性(带有表级锁)。即使您有少量的写入操作,它也可以阻止其他所有操作,这取决于读取操作的持续时间。

下面是一个表上的场景:

  • 您执行一个SELECT,它将持续几秒钟
  • 您决定在同一时间内运行一个花费毫秒时间的UPDATE (或此表上的任何写操作)。
  • 在此期间,对整个表设置写锁,除运行查询外,任何人都不能读写。将使用此表的所有内容都将排队。唯一能释放锁的是等待第一个SELECT结束,然后等待UPDATE结束。

现在,想象一下,如果您多读操作的数量。对于一个基于web的应用程序来说,当每个用户都要等待几秒钟才能加载一个页面时,这是非常丑陋的。但是,如果大多数读取操作只需毫秒执行。这个问题不会被注意到。

InnoDB已经通过MVCC (多版本并发控制)实现解决了这个问题,该实现同时保持单个行的多个版本。它可以在行级别锁定,而不是像MyISAM那样锁定在表中。

有一些缓解这种现象的提示,比如LOW_PRIORITY用于您的UPDATE、DELETE或INSERT或HIGH_PRIORITY用于您的SELECT,以及/或使用low-priority-updates系统变量。有关更多信息,您可以阅读正式文档这里。

如果这个缺点对您和您的应用程序没有问题,您可以继续选择MyISAM。

在您的环境中准确查看一个或另一个存储引擎的唯一方法是使用您的生产工作负载(或类似的东西)来测试它。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/44732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档