为什么现在的MySQL都要使用innoDB引擎 - Go语言中文社区

为什么现在的MySQL都要使用innoDB引擎


1.MyISAM

    MyISAM是mysql5.1及之前版本的默认引擎,很久未被更新。

    使用表级锁, 如果数据量大,一个插入操作锁定表后,其他请求都将阻塞。

    支持全文索引

    支持查询缓存

保存表的总行数,使用count(*) 并且无where子句的时候可以很快返回结果,但是实际使用时基本不会无where子句

简要:不支持事务安全 

没有事务日志和分类,因此它只将数据写入Linux文件缓存并希望能最终写入磁盘。如果系统在这个过程中崩溃或者丢失一些数据,MyISAM表会经常出现无法启动或者警告你需要修复表;它恢复数据的方法有限并且经常会丢失数据。另外,MyISAM也很难正确的备份,备份的时候通常需要锁住整个系统的数据,这就意味着每天网站都要宕机或者无法使用一段时间。

 

MyISAM表允许在定期列中进行全文检索,而InnoDB不支持(这个没搞懂)

2.InnoDB

    支持事务

    支持行级锁和表级锁,能支持更多的并发量

    mysql5.6版本开始支持 全文索引

    查询不加锁,完全不影响查询

    Innodb会对每个表设置一个事务计数器,里面存储当前最大的事务ID.当一个事务提交时,InnoDB会使用MVCC中系统事务ID最大的事务ID跟新当前表的计数器.只有比这个最大ID大的事务能使用查询缓存,其他比这个ID小的事务则不能使用查询缓存.另外,在InnoDB中,所有有加锁操作的事务都不使用任何查询缓存

简要:支持事务安全   

事务日志记录真正的数据库事务,但更重要的是数据崩溃恢复和回滚。基于 InooDB方式的IO,能给予更安全数据保护和更好性能表现

 

  

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/6b45b150bfbf
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-09 08:55:43
  • 阅读 ( 1473 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢