为了账号安全,请及时绑定邮箱和手机立即绑定

MyISAM诉InnoDB

MyISAM诉InnoDB

犯罪嫌疑人X 2019-05-31 17:04:18
MyISAM诉InnoDB我要说的是,我正在做一个涉及大量数据库写作的项目(70%的插入和30%的读取)。这一比率还将包括更新,我认为是一读一写。阅读可能很脏(例如,我在阅读时不需要100%准确的信息)。所讨论的任务将是每小时处理100多万个数据库事务。我在网上读过很多关于MyISAM和InnoDB之间的区别的文章,对我来说,MyISAM似乎是我在这个任务中使用的特定数据库/表的明显选择。据我所读,如果需要事务,则InnoDB是很好的,因为行级锁定是支持的。有没有人有过这类负载(或更高的负荷)的经验?MyISAM是该走的路吗?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

我有一个简短的讨论表中的这个问题,这样您就可以得出是否与InnoDBMyISAM.

下面简要介绍一下在哪种情况下应该使用哪个db存储引擎:

                                                 MyISAM   InnoDB
----------------------------------------------------------------
Required full-text search                        Yes      5.6.4
----------------------------------------------------------------
Require transactions                                      Yes
----------------------------------------------------------------
Frequent select queries                          Yes      
----------------------------------------------------------------
Frequent insert, update, delete                           Yes
----------------------------------------------------------------
Row locking (multi processing on single table)            Yes
----------------------------------------------------------------
Relational base design                                    Yes

总结如下:

Frequent reading, almost no writing   => MyISAM
Full-text search in MySQL <= 5.5      => MyISAM

在所有其他情况下,InnoDB通常是最好的方法。


查看完整回答
反对 回复 2019-05-31
?
慕仙森

TA贡献1827条经验 获得超7个赞

我不是数据库专家,也不是凭经验说话的。然而:

MyISAM表使用表级锁定。..根据您的流量估计,您有接近200写每秒。与MyISAM其中只有一种可能在任何时候都在进行中。..您必须确保您的硬件能够跟上这些事务,以避免溢出,也就是说,一个查询所花费的时间不超过5ms。

这意味着您需要一个支持行级锁定的存储引擎,即InnoDB。

另一方面,编写几个简单的脚本来模拟每个存储引擎的负载,然后比较结果应该是相当简单的。


查看完整回答
反对 回复 2019-05-31
?
慕少森

TA贡献2019条经验 获得超9个赞

人们经常谈论性能,读与写,外键等。但在我看来,存储引擎还有另外一个必须具备的特性:原子更新。

试试这个:

  1. 对MyISAM表进行5秒的更新。
  2. 当更新正在进行时,比如说2.5秒,点击Ctrl-C来中断它.
  3. 观察桌子上的效果。更新了多少行?有多少没有更新?这个表是可读的,还是当你点击Ctrl-C时它被破坏了?
  4. 对InnoDB表进行相同的更新实验,中断正在进行的查询。
  5. 观察InnoDB表。

    行已更新。InnoDB已经保证您有原子更新,如果无法提交完整的更新,则会回滚整个更改。而且,该表没有损坏。即使您使用

    killall -9 mysqld

    模拟坠机。

当然,性能是可取的,但是不丢失数据应该胜过那个。


查看完整回答
反对 回复 2019-05-31
  • 3 回答
  • 0 关注
  • 604 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信