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. sicily 题目分类

    为了方便刷题,直接把分类保存下来方便来找. 转自:http://dengbaoleng.iteye.com/blog/1505083 [数据结构/图论] 1310Right-HeavyTree笛卡尔树 ...

  2. 忽略PyCharm4中特定的警告提示信息

    有一种简单的方式忽略PyCharm4中的警告,光标放在下划线上,a. 等灯泡出现,点击灯泡或者b. 按下Alt和Enter键,选择'Ignore errors like this'. 或者,在设置里更 ...

  3. 你不知道的JavaScript(十一)函数参数

    JavaScript函数的定义和使用非常简单,我们看一下下面的代码: <script type="text/javascript"> var sum = functio ...

  4. (转载)ListView与ScrollView冲突的4种解决方案

    问题解决方案1.手动设置ListView高度    经过测试发现,在xml中直接指定ListView的高度,是可以解决这个问题的,但是ListView中的数据是可变的,实际高度还需要实际测量.于是手动 ...

  5. <%=%>、<%%>、<%@%>、<%#%>的区别

    1.<%= %> 里面放变量名,获取后台的变量值,直接输入变量到页面上,里面放的变量名,未经过encode eg: 后台: seession["ab"]=ab; 前台: ...

  6. Good Bye 2014 B. New Year Permutation 【传递闭包 贪心】

    解题思路:给出一列数an,再给出一个矩阵d[i][j],在满足d[i][j]=1的情况下,称a[i]和a[j]可以交换,问经过交换最后得到字典序最小的数列a[n] 首先是贪心的思想,大的能换就换到后面 ...

  7. 如何取未知Json字符串 某个主键取对应的Value

    需添加引用using Newtonsoft.Json; string strJon  "Json 字符串"; JObject obj = JObject.Parse(strJon  ...

  8. c++string类的简单介绍

    #include "iostream" #include "string" using namespace std; /*@author:浅滩 *family: ...

  9. SP10628 COT - Count on a tree 主席树

    Code: #include<cstdio> #include<cstring> #include<algorithm> #include<string> ...

  10. 企业微信H5支付返回不到自己指定的结果页面

    项目:vue做的H5项目,嵌入到企业微信里 发现的问题:支付完成后的跳转页面 跳转不到自己指定的页面 问题在于:调支付接口时,redirectUrl: document.location.protoc ...