ISAM、MyISAM、InnoDB、ACID详解
文章目录
- 1. ISAM
- 2. MyISAM
- 3. InnoDB
- 4. InnoDB与MyISAM差别
- 5. ACID
- Atomic(原子性):
- Consistency(一致性):
- Isolation(隔离性):
- Durability(持久性):
1. ISAM
索引顺序存取方法(ISAM, Indexed Sequential Access Method)最初是IBM公司发展起来的一个文件系统,可以连续地(按照他们进入的顺序)或者任意地(根据索引)记录任何访问。
每个索引定义了一次不同排列的记录。
2. MyISAM
MyISAM是默认存储引擎(Mysql5.1前)。它基于更老的ISAM代码,但有很多有用的扩展。(注意MySQL 5.1不支持ISAM)。
每个MyISAM在磁盘上存储成三个文件,每一个文件的名字均以表的名字开始,扩展名指出文件类型。
.frm
文件 存储 表定义;
.MYD
(MYData)文件 存储 表的数据;
.MYI
(MYIndex)文件 存储 表的索引。
3. InnoDB
InnoDB,是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一。
InnoDB 由Innobase Oy公司所开发 ,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是 支持了ACID兼容的事务(Transaction)功能 ,类似于PostgreSQL。
InnoDB 物理文件结构为:
.frm
文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等;.ibd
文件或.ibdata
文件: 这两种文件都是存放 InnoDB 数据的文件,之所以有两种文件形式存放 InnoDB 的数据,是因为 InnoDB 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。独享表空间存储方式使用.ibd文件,并且每个表一个.ibd文件;
共享表空间存储方式使用.ibdata文件,所有表共同使用一个.ibdata文件(或多个,可自己配置)。
4. InnoDB与MyISAM差别
- InnoDB 支持事务,MyISAM 不支持事务。 这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
- InnoDB 支持外键,而 MyISAM 不支持。 对一个包含外键的 InnoDB 表转为 MYISAM 会失败;
- InnoDB 是聚簇索引,MyISAM 是非聚簇索引。
聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。
但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 - InnoDB 不保存表的具体行数,执行select count(*) from table 时需要全表扫描。
而 MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快; - InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。
MyISAM一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
对比项 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 | 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
默认安装 | 是 | 是 |
5. ACID
ACID是:
- Atomic(原子性)
- Consistency(一致性)
- Isolation(隔离性)
- Durability(持久性)
Atomic(原子性):
指 整个数据库事务是不可分割的工作单位。只有使数据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。
Consistency(一致性):
指 数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款总额为2000元。
Isolation(隔离性):
指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
Durability(持久性):
指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
ISAM、MyISAM、InnoDB、ACID详解相关推荐
- 同一个事务里面对同一条数据做2次修改_[玩转MySQL之九]MySQL事务ACID[2-1]ACID详解...
一. 引言 做数据库相关工作的同学都知道事务,就是一个操作序列 ,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位, ACID又是事务的四大特性. 那么就会有如下疑问: ACID具体代表什 ...
- mysql innodb 设置详解_【mysql】mysql innodb 配置详解
MySQLinnodb 配置详解 innodb_buffer_pool_size:这是InnoDB最重要的设置,对InnoDB性能有决定性的影响.默认的设置只有8M,所以默认的数据库设置下面InnoD ...
- InnoDB Cluster详解
目录 一.InnoDB Cluster简介 1. 整体架构 2. MySQL Shell 3. MySQL Router 4. MySQL服务器集群 二.创建InnoDB Cluster 1. 检查实 ...
- MySQL存储引擎中的MyISAM和InnoDB区别详解
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- mysql中engine=innodb和engine=myisam的区别详解
最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...
- Mysql ACID详解
ACID简述 Atomicity.Durability实现之 (WAL+redo log) Atomicity .Isolation实现之 (锁 OR undo log+MVCC) 一.前言 主要是后 ...
- MyISAM 表锁详解
MyISAM存储引擎使用表锁,偏向于读操作.InnoDB支持我们常用的事务.外键和行级锁,MyISAM是不支持的,它追求的是性能. 此外,Myisam的读写锁调度是写优先,这也是myisam不适合做写 ...
- MySQL(六)InnoDB锁详解
目录 InnoDB 锁的基本类型 锁的基本模式 共享锁(Shared Locks ) 排它锁(Exclusive Locks) 意向锁 锁的原理 锁的算法 记录锁 间隙锁 临键锁 总结 事务隔离级别 ...
- Mysql Innodb LBCC详解
什么是存储引擎? 存储引擎可理解为对磁盘的操作方式,是一套存储数据的规范,Mysql是一个插拔式的存储引擎.默认的Innodb并不是由Mysql团队研发,而是由第三方公司研发产生.它的最重要作用是修饰 ...
最新文章
- 'eval' is null or not an object
- 2017年高级二级计算机考试试题,2017年计算机二级高级Office考试试题操作题
- Python下载与安装教程
- mysql主从配置 windows_windows实现mysql主从配置
- android 图片长方形_android 相机只拍摄矩形区域图片
- c#中高效的excel导入oracle的方法(转)
- 联想拯救者电竞手机成功“截胡”:全球首发骁龙865+
- 网易有道词典--关闭自动发音
- 为什么说比特币隐私是一门艺术?
- 小学计算机打字比赛教案,小学信息技术二年级教案
- PHP调微信小程序接口:生成小程序码,常见问题
- itextpdf 超链接
- 重磅!2021年国内Java培训机构排名前十最新出炉啦
- 济南市“十四五”数字泉城规划 附下载
- 【NBA之路】启蒙—to—詹皇—to—保罗乔治
- 大一计算机在线测试,计算机在线测试
- Leo第一次练习跆拳道--Leo与跆拳道 1
- 计算机装固态硬盘会不会卡,加装SSD固态硬盘,电脑还是卡?揭晓背后原因,教你10S开机!...
- C++学习 - lambada表达式
- Soft(er)-NMS:非极大值抑制算法的两个改进算法
热门文章
- 弥散峰度成像DKI简介
- 程序史简史:从巴贝奇到爱达在到图灵
- 概率论与数理统计Chapter1——先导知识1
- 保持好距离才会保持好爱情!情侣间最好的距离!很值得一看!
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校就业管理系统157v3
- ubuntu8.10解决flash乱码问题!
- Jenkins部署项目时,git报错fatal: index file smaller than expected
- 谈《黑社会之龙城岁月》中之大D
- java的无参构造方法_Java有参构造方法和无参构造方法
- Python实现网络爬虫,爬关键词“武汉”的百度新闻