zoukankan      html  css  js  c++  java
  • mysql的innodb存储引擎和myisam存储引擎的区别

    主要区别如下:

       1、事务支持。innodb支持事务,事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;而myisam强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。

       2、表锁差异。myisam只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁;innodb支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。

       3、主键差异。MyISAM允许没有任何索引和主键的表存在,索引都是保存行的地址;而InnoDB如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。

       4、外键差异。MyISAM不支持外键,而innodb支持外键。

       5、存储结构。每个MyISAM表在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。而innodb是由.frm文件表空间(分为独立表空间或者共享表空间,如果在配置文件中配置了innodb_file_per_table=true或者不配置就会使用独立表空间)日志文件(redo log)组成。

        6、全文索引。MyISAM支持 FULLTEXT类型的全文索引;InnoDB的不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好,而且自从mysql5.6版本开始innodb就已经开始支持全文索引,mysql8.0则完全抛弃MyISAM存储引擎了,所以淡化MyISAM吧,已经逐渐成为历史产品,nnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。。

        7、都是B+树索引,Innodb是索引组织表,myisam是堆表,索引组织表和堆表的区别要熟悉;

  • 相关阅读:
    程序员之歌 littleflute原创
    生成网站缩略图的小工具,:)
    十个习惯
    用反编译工具透析.Net页面生成本质
    装箱拆箱陷阱揭秘
    图片上传——用一般处理程序实现
    Web.config文件中常用的配置节点
    初识三层,请多指教
    匪夷所思的题目,心理慢慢引导
    权重分配方法
  • 原文地址:https://www.cnblogs.com/igoodful/p/9014747.html
Copyright © 2011-2022 走看看