1. 事务:InnoDB支持,MyISAM不支持,在InnoDB中每一条SQL语句都会默认封装成事务自动提交,然而这样会影响速度,因此最好把多条SQL语句放在begin和commit之间组成一个事务;

2. 索引:InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),而辅助索引包含主键列(主索引)。
         MyISAM是非聚集索引,也是使用B+Tree作为索引结构,但索引和数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的。
 
3.全文索引:Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;不过MySQL在5.7版本以后,InnoDB支持全文索引了。
 
4.外键:InnoDB支持外键,而MyISAM不支持。
 
5.count()函数:InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
 
6.主键:InnoDB表必须有主键(没有指定的话引擎会自动寻找找或生产一个主键),而Myisam可以没有。
 
7.存储文件类型:InnoDB存储文件有frm、ibd,而MyISAM是frm、myd、myi

       frm是表定义文件,ibd是数据文件,myd是数据文件,myi是索引文件

8.表锁:MyISAM只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁;

    InnoDB支持表、行(默认)级锁;

    InnoDB的行锁是实现在索引上的,而不是锁在物理行记录上,就是说如果访问没有命中索引的话是无法使用行锁会退化为表锁。

    比如:有一张InnoDB表,t_user(id,name,age,address),id为PK  无其它索引

    update t_user set age = 18 where id = 2 ;   命中索引,行锁

    update t_user set age = 20 where id != 6 ;   未命中索引,表锁

    update t_user set age = 21 where name = "Jie" ;  无索引,表锁

总结:
 
    MyISAM不支持事务,而且不支持外键,如果对数据库表需要执行大量的 SELECT 操作,MyISAM比较适合
 
    InnoDB支持外键、行锁、事务是他的最大特点。如果有大量的 UPDATE 和 INSERT,建议使用InnoDB

MyISAM与InnoDB 的区别的更多相关文章

  1. MySQL中MyISAM和InnoDB的区别

    MyISAM和InnoDB的区别 MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事 ...

  2. MyIsam和InnoDB的区别

    个人见解: 1.最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持 所以有用到事务处理和外键的,要用Innodb 2. InnoDB 中不保存表的具体行数,也就是说,执行s ...

  3. myisam 与innodb的区别

    myisam 与innodb的区别 frm结构 fri索引 frd数据 innodb:一个表一个文件:frm文件 所有的innodb表,都使用表空间储存, 数据和索引的保存文件不同,myisam 分开 ...

  4. MySQL存储引擎简介-MyISAM和InnoDB的区别

    上篇文章<MySql逻辑结构简介>我们聊到了存储引擎,可以说MySQL可插拔的多元化存储引擎给我们的使用者带来了很灵活的选择. 这篇文章我们来聊一下目前主流的两种存储引擎MyISAM和In ...

  5. MySQL数据库之MyISAM与InnoDB的区别

    MySQL数据库之MyISAM与InnoDB的区别 从以下几个方面: 1.存储结构 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义 ...

  6. MySQL存储引擎:MyISAM和InnoDB的区别

    MyISAM和InnoDB的区别 定义 InnoDB:MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎.它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回滚.InnoD ...

  7. 一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.怎么处理慢查询 2.ACID靠什么保证的 3.什么是MVCC 4.mysql主从同步原理 5.简述Myisam和inn ...

  8. MySQL数据库引擎MyISAM和InnoDB的区别介绍

    MySQL数据库有多种存储引擎:比如:MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED.ARCHIVE.CSV.BL ...

  9. mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?

    MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引. 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from tabl ...

  10. mysql的引擎myisam和innodb的区别

    1. MYISAM和INNODB的不同?答:主要有以下几点区别:   a)构造上的区别     MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义:.MYD (MYData)为数据文件:. ...

随机推荐

  1. Nginx实现HTTP及TCP负载均衡

    这种通过一台apache的服务器把客户请求分别传递给两台tomcat叫负载均衡  ========================================= ================= ...

  2. Excel实用知识1

    纯手打,可能有错别字,使用的版本是office2013 转载请注明出处 http://www.cnblogs.com/hnnydxgjj/p/6329509.html ,谢谢 使用现成的模板 ”开头的 ...

  3. Jquery实现ajax常用属性

  4. encypt dataset

    import getoptimport sysimport uuidimport hashlibimport csvdef getIds(totals,encrypt): seed=set() for ...

  5. jsp分割字符串并遍历

    1.先引入JSTL库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> ...

  6. 2020.02.28 Linux 命令

    Cat   语法格式 cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 --number:由 1 开始对所有输出的行数编号. -b ...

  7. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:将所有列表项放置同一行

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  8. Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]

    这篇文章主要介绍Caffe2的基本数据结构: Workspaces Operators Nets 在开始之前最好先阅读以下Intro Turorial 首先,导入caffe2.其中core和works ...

  9. 夯实Java基础(二十二)——Java8新特性之Lambda表达式

    1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...

  10. mysql 统计索引执行情况

    select distinct b.TABLE_SCHEMA,b.TABLE_NAME , b.INDEX_NAME , a.count_starfrom performance_schema.tab ...