您的位置:首页 > 编程语言 > Python开发

python基础 & MySQL存储引擎MyISAM与InnoDB区别总结整理

2020-03-11 12:17 357 查看
1. MySQL默认存储引擎的变迁
  • 在MySQL 5.5之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。
2. MyISAM与InnoDB存储引擎的主要特点

1).MyISAM存储引擎的特点是:表级锁不支持事务、支持全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心;

2).InnoDB存储引擎的特点是:行级锁事务安全(ACID兼容)、支持外键、不支持FULLTEXT类型的索引(5.6.4以后版本开始支持FULLTEXT类型的索引)。InnoDB存储引擎提供了具有提交、 回滚和崩溃恢复能力的事务安全存储引擎。InnoDB是为处理巨大量时拥有最大性能而设计的。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。

  • 行级锁

    行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁 和 排他锁。

  • 特点:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

  • 表级锁

      表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。

    • 特点:开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。

    3. MyISAM与InnoDB性能测试
    • 随着CPU核数的增加,InnoDB的吞吐量反而越好,而MyISAM,其吞吐量几乎没有什么变化,显然,MyISAM的表锁定机制降低了读和写的吞吐量。
    4. 如何选择:
    • MyISAM适合:
      1). 做很多count 的计算;

      2). 插入不频繁,查询非常频繁,如果执行大量的SELECT,MyISAM是更好的选择;

      3). 没有事务。

    • InnoDB适合:

      1). 可靠性要求比较高,或者要求事务;

      2). 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况指定数据引擎的创建;

      3). 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表;

    参考博客,写的相当详细

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    Hanmin_hm 发布了29 篇原创文章 · 获赞 1 · 访问量 677 私信 关注
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: