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. WPF 体系结构

    转载地址:http://blog.csdn.net/changtianshuiyue/article/details/38963477 本主题提供 Windows Presentation Found ...

  2. maven设置镜像地址

    方法一:在maven文件夹下的settings.xml中添加(对所有的项目都有效) <mirror> <id>alimaven</id> <name>a ...

  3. 爬虫(十四):Scrapy框架(一) 初识Scrapy、第一个案例

    1. Scrapy框架 Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展程度非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架. 1.1 Scrapy介绍 ...

  4. C/C++网络编程9——多进程服务器端实现

    #include <iostream> #include <unistd.h> #include <cstdlib> #include <arpa/inet. ...

  5. Vulnhub_DC8 记录

    目录 DC8 经验 & 总结 步骤流水 信息搜集 80端口 获取Shell 提权 DC8 经验 & 总结 对页面的功能和对应的url要敏感. 所有的功能都要测试,要雨露均沾. 提示说的 ...

  6. CentOS修改各大yum源(centos5,centos6,centos7)

    备份原配置文件 进入yum源配置目录: cd /etc/yum.repos.d 如果没有先安装wget: sudo yum install wget 修改yum源,就是修改CentOS-Base.re ...

  7. selenium webdriver 操作select

    @Test public void test() { WebDriver driver=ExplorerBase.IESetting(); driver.get("http://unique ...

  8. Spark教程——(8)本地执行spark-sql程序

    在程序中设定Spark SQL的运行模式: //.setMaster("local")设置本地运行模式 val conf = new SparkConf().setAppName( ...

  9. nodejs中this详解

    最近在用Nodejs进行APP运维服务管理系统开发时发现,nodejs中的this经常会变,查了下资料后发现this在不同的代码位置中代表不同的涵义,在实际运用过程中可以用var self = thi ...

  10. Design and History FAQ for Python3

    Source : Design and History FAQ for Python3 Why is there no goto? 你可以通过异常来获得一个可以跨函数调用的 "goto 结构 ...