1、Myisam 支持锁表,innoDB 支持行锁。
2、innoDB 和 BDB 支持事务。
3、Myisam 与 innoDB 索引的区别:
     Myisam 无论是主键索引还是其他索引,索引存储的是数据的物理行地址。比如 id为主键索引,索引文件中每个 id 对应的是数据的物理行地址。查询时先根据条件从索引树找到对应的 id ,然后根据 id 存储的物理行地址查询数据。
    
     innoDB 的主键索引存储的是每条数据(即 id 直接对应数据)。其他索引例如:给 name 字段添加索引,索引树所对应的是每条数据的 id 。再根据 id 去拿对应的整条数据。     
     innoDB 主键索引也称之为聚簇索引(既有主键值,又有行数据 ),因为索引的值和 id 值都聚集在一起。。优点是 根据主键查询直接就可以拿到数据。缺点是 根据其他索引字段查询,要多拐一个弯儿(根据其他索引存储的 id 再去从主键索引拿数据),查询效率慢。而 Myisam 直接存储的是物理行地址,所以索引效率理论一样。 
     innoDB 如果没有主键,会把 unique key 做主键,也会有聚簇索引效果。如果 unique key 都没有,则系统内部会生成 rowid 做主键。 innoDB 在选择主键时类型最好是整型的而且是有序的,因为如果是无序的,如果产生分裂(分裂是比如已经有 id 1、5 ,这时来了个 3 就会把 5 向后推,产生分裂),将会大大降低了插入速度。
 
     假如有一个表的数据量非常大(id、ver、str(3000)),那么引擎将直接影响查询速度。因为第三个字段数据太长,innoDB 的主键索引存储的是整条数据,而这条数据是很长的,所以他会分割成很多块儿存储,会导致索引文件过大,查询时光读取索引文件就很消耗时间(解决方法:给查询字段添加组合索引 ,id和
ver 设为组合索引,将会大大加快查询速度。因为 innoDB 引擎 组合索引直接存储的是数据 id ,减小了索引文件所占空间,查询速度相对就快了。如果没有第三个数据那么大的字段, 依靠 innoDB 的主键索引读取是差不多的)。而
Myisam 的任何索引都存储的是数据的物理行,索引文件相对就小,读取文件速度当然比较快速。
     总结一点:索引文件大小直接影响读取速度。
 
4、mysql中有一种机制是表锁定和行锁定,为什么要出现这种机制,是为了保证数据的完整性。
     我举个例子来说吧,如果有二个sql都要修改同一张表的同一条数据,这个时候怎么办呢?
     是不是二个sql都可以同时修改这条数据呢?很显然mysql对这种情况的处理是:
    一种是表锁定(myisam存储引擎),
     一个是行锁定(innodb存储引擎)。
     表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。
     行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。
     如果数据太多,一次执行的时间太长,等待的时间就越长,这也是我们为什么要分表的原因。

myisam和innodb的qubie的更多相关文章

  1. MyISAM和InnoDB

    MyISAM和InnoDB MyISAM MyISAM使用B+tree作为索引结构,叶节点存放的是数据地址. MyISAM不支持事务和外键. MyISAM是表锁,对数据库写操作时会锁住整个表,效率低. ...

  2. 白话讲MyIsam和InnoDB的区别

    "MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持"这是网上对MyISAM和InnoDB的解释,很抽象吧,我们用白话的方式解释一下其实也比较简单所谓事务处理,就是原 ...

  3. MySQL存储引擎之Myisam和Innodb总结性梳理

    Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...

  4. msql数据迁移,myisam及innoDB

    直接迁移数据库文件. 一.MySQL数据库文件介绍 MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文 ...

  5. myisam、innodb存储引擎比较

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

  6. MySQL中MyISAM和InnoDB的区别

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

  7. 常用mysql数据库引擎——MyISAM和InnoDB区别

    背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据 ...

  8. MySQL两种表存储结构MyISAM和InnoDB的性能比较测试

    转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1 ...

  9. MyISAM 和InnoDB 区别 转

    MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理 ...

随机推荐

  1. vc应用CPictureEx类(重载CStatic类)加载gif动画

    1.PictureEx.h文件: //////////////////////////////////////////////////////////////////////// PictureEx. ...

  2. Android之通过HttpURLConnection.getResponseCode状态码抛出异常的问题以及解决方法

    1.最近,在学习解析json数据的时候遇到一个错误信息,错误信息如下图所示:   发现解析出来的数据为空,错误信息如上图所示,发现程序中的HttpUtils工具类的22行出现了错误和MainActiv ...

  3. HDU 1556 Color the ball【树状数组】

    题意:给出n个区间,每次给这个区间里面的数加1,询问单点的值 一维的区间更新,单点查询,还是那篇论文里面讲了的 #include<iostream> #include<cstdio& ...

  4. POJ 3190 Stall Reservations 【贪心 优先队列】

    题意:给出n头牛必须单独占用一台机器的时间段,问至少需要多少台机器 先按照每头牛的时间的x来排序,然后用一个优先队列(优先选取最小的)维护已经喂好的牛的最小的结束时间 比如现在优先队列里面有m头牛已经 ...

  5. shell-4.bash的变量:用户自定义变量

    目录 内容

  6. easyui的datagrid右侧没有边框线

    做项目时,用的easyui的框架的datagrid,运行时发现右侧没有边框,其它的都有边框,使用网页的审查元素可以看到datagrid样式里的宽度没有自动减去2个像素,这些都是easyui自算的宽高, ...

  7. eclipse历史版本下载地址

    http://wiki.eclipse.org/Older_Versions_Of_Eclipse

  8. [LOJ2607]【NOIP2012】疫情控制

    题意: 题目描述 H 国有n个城市,这n个城市用n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边 ...

  9. LINUX 中 python 版本升级

    首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: 1 # wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tg ...

  10. Android 解决TextVIew载入自己定义字体慢的问题

    网上非常多自己定义字体样式的代码.都是告诉应该这样做: 在自己定义控件里写,可是这样写有问题,会随着界面里自己定义控件越多.Activity载入速度越慢,太多了easy造成内存泄露问题,由于你没创建一 ...