总结一下MySQL的Myisam和Innodb引擎的一些差别,权当复习了。

首先二者在文件构成上:

  • Myisam会存储三个文件:.frm 存储表结构,.MYD存储表的数据,.MYI文件存储表的索引;所以完整的拷贝一张表这三个文件都需要。另外Myisam会对索引进行压缩。用Myisam备份会更简单。
  • Innodb也有 .frm表结构文件,但是数据存储就不同了,由于有表空间的概念,所以数据文件可能是独立的,也可能是空闲的,独立的话数据和索引都会在一个.ibd文件内。
事务的支持:
  • Myisam不支持;所以如果你真的需要诸如事务,外键等特性,放弃它吧。
  • Innodb支持 事物,回滚等一些事务安全的ACID特性,支持外键。
  • Myisam只支持表锁,意即如果你执行了一条DML(数据操纵语言,即增删改查)语句,整张表会获得一把锁,在操作执行完之前其他人不能够再操作这张表了,所以如果表的并发高,Myisam性能会差一些
  • Myisam支持行锁,即可以只给某一行上锁而非整个表,所以在并发情况下,Update之类的操作性能会更好。当然如果一条SQL语句不能确定扫描范围时,也会锁表,诸如where like'%'的操作。更简单来说,Innodb使用where检索的列没有索引,那么就会锁表了。
DML(Insert, Select, Update, Delete):

  • Select:一般认为Myisam的读性能会比Innodb更好,所以如果是个读多写少的项目,这点上Myisam可以有加分。
  • Insert:这个要分情况来说,单线程操作,Myisam明显会快,但是并发多的话就不一定了。还有需要说明的是Myisam支持Insert Delayed操作,如果你的应用可以接受这种使用方式(可能延迟一下才生效),那么它会更好一些
  • Update:一般认为Innodb更快
  • Delete:Innodb,它会一行行的删除表,而不是重新建立表
其他:

  • count(*)  :Myisam会保存表的具体行数,而innodb不会,所以你在用phpmyadmin来查看时,表的行数会显示'~'大约多少行。所以select count(*) 用Myisam当然快,不过这是不加where条件的情况下
  • Myisam还支持全文索引,比如说搜索诸如某些text字段时 where * like "%*"时性能和效率会更好
  • Auto_Increment:Innodb必须包含只有该字段的索引,而Myisam可以使用联合索引。
  • Myisam建立的表可以使用Myisam_merge引擎,在某些情况下很有用。

关于MySQL的Myisam和Innodb的一些比较总结的更多相关文章

  1. 【mysql中myisam和innodb的区别】

    单击进入源网页 要点摘要: 1.查看mysql存储引擎的状态mysql> show engines; 2.查看mysql默认的存储引擎mysql> show variables like ...

  2. MySQL中MyISAM和InnoDB两种主流存储引擎的特点

    一.数据库引擎(Engines)的概念 MySQ5.6L的架构图: MySQL的存储引擎全称为(Pluggable Storage Engines)插件式存储引擎.MySQL的所有逻辑概念,包括SQL ...

  3. MySQL中MyISAM和InnoDB的区别

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

  4. 【转】MySQL数据库MyISAM和InnoDB存储引擎的比较

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...

  5. MySQL数据库MyISAM和InnoDB存储引擎的比较

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...

  6. MySQL数据库MyISAM和InnoDB存储引擎的比较(转)

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...

  7. MySQL的MyISAM和InnoDB对比及优化(转)

    MyISAM和InnoDB是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是 ...

  8. MySQL数据库MyISAM和InnoDB存储引擎的比较【转载】

    转自 http://www.cnblogs.com/panfeng412/archive/2011/08/16/2140364.html MySQL有多种存储引擎,MyISAM和InnoDB是其中常用 ...

  9. MySQL的MyISAM和InnoDB

    1.概述 MySQL数据库其中一个特性是它的存储引擎是插件式的.用户可以根据应用需要选择存储引擎.Mysql默认支持多种存储引擎,以适用各种不同的应用需要. 默认情况下,创建表不指定表的存储引擎,则新 ...

随机推荐

  1. poj 2425 A Chess Game_sg函数

    题意:给你一个有向无环图,再给你图上的棋子,每人每次只能移动一个棋子,当轮到你不能移动棋子是就输了,棋子可以同时在一个点 比赛时就差这题没ak,做了几天博弈终于搞懂了. #include <io ...

  2. poj 2704 Pascal's Travels_记忆化搜索

    一道简单但是题意蛋疼的题目 题意:给你个n*n的图,开始在左上角,要求走到右下角有多种走法,图上的数表示走几步,只能向右或向下走. #include<iostream> #include& ...

  3. hdu4331 Image Recognition 就暴力啊。。啊。。

    题意: 给一个1和0组成的正方形矩阵,求 四条边都由1构成的正方形的个数. 方法: 先统计矩阵中每一点,向四个方向,最多有多少个连续的1,这里用dp做也 与此同时,顺便求下 能向右下和 左上 两个方向 ...

  4. GDB 多进程调试

    启动: $gdb <file>  || $gdb 然后(gdb)file <file> 运行: (gdb)run <该程序本身的命令行参数> 查看代码: (gdb) ...

  5. 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识

    正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...

  6. Codeforces 482B Interesting Array(线段树)

    题目链接:Codeforces 482B Interesting Array 题目大意:给定一个长度为N的数组,如今有M个限制,每一个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是 ...

  7. struts2 s:if 的字符串比较问题

    如果数据库字段的数据类型为string or  char 类型,此时在页面 <s:if test=""></s:if> 中test <s:iterat ...

  8. java中使用URLClassLoader访问外部jar包的java类

    很多时候 我们写的Java程序是分模块的,有很好的扩展机制,即我们可以为我们自己的java类添加插件,来运行将来某天我们可能开发出来的类,以下称这些类为插件类. 下边是一种简单的实现方法: Class ...

  9. div+css中常见的浏览器兼容性处理-兼容不同浏览器

    在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! div+cs ...

  10. 2015.01.06 JQuery

    jQuery是一个兼容多浏览器的javascript库.开发出来的JavaScript的脚本包.非侵入性的脚本. 下载地址:http://jquery.com/          (打不开网页需要翻* ...