MySql------存储引擎(InnoDB,ISAM)
MySql存储引擎
- 导读
- InnoDB存储引擎
- 一、存储结构
- 二、存储空间消耗
- 三、对事务支持情况
- 四、对锁支持
- 五、表行数
- MyISAM存储引擎
- 一、存储结构
- 二、存储空间消耗
- 三、对事务支持情况
- 四、对锁支持
- 五、表行数
- 为什么MyISAM会比Innodb 的查询速度快
- 应用场景选择
导读
MySQL支持的存储引擎很多,其中包括MyISAM、InnoDB、MERGE、EXAMPLE、BDB、ARCHIVE、MEMORY、NDB Cluster等,其中InnoDB和BDB支持事务安全。同时MySql还支持一些第三方的存储引擎,例如TokuDB(高写性能高压缩存储引擎)、Infobright(列式存储引擎)。本文主要讲InnoDB和MyISAM这两个普遍使用的存储引擎之间差异,选择场景。
InnoDB存储引擎
InnoDB是MySQL最常用的数据库引擎,是MySQL AB发布binary的标准之一。InnoDB存储引擎由Innobase Oy公司所开发,在2006年五月时被甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。
一、存储结构
所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),.frm文件同样存储为表结构文件,.ibd文件存储的是数据和索引文件,InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
InnoDB支持聚簇索引和非聚簇索引
二、存储空间消耗
InnoDB会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。
三、对事务支持情况
拥有外键和事务支持,还具有事务提交(commit)、回滚(rollback)和崩溃修复能力(crach recovery capabilities)等这些事务安全(transaction-safe ACID compliant)型表。
InnoDB中必须包含主键索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。
四、对锁支持
InnoDB存储引擎支持表锁,行锁,行锁可以大幅度提高用户并发操作。对于 InnoDB 引擎来说,读锁和写锁可以加在表上,也可以加在行上。
对于并发读和并发写的问题,可以通过实现一个由两种类型的锁组成的锁系统来解决。这两种类型的锁通常被称为 共享锁(Shared Lock,S Lock) 和 排他锁(Exclusive Lock,X Lock),也叫 读锁(readlock) 和 写锁(write lock):
共享锁 / 读锁:允许事务读(select)数据
排他锁 / 写锁:允许事务删除(delete)或更新(update)数据
InnoDB 存储引擎的行级锁是基于索引的,也就是说当索引失效或者说根本没有用索引的时候,行锁就会升级成表锁。
五、表行数
没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。
MyISAM存储引擎
MyISAM是MySQL(5.5版之前)的默认数据库引擎,由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)改良。虽然查询性能优良,但有个缺点:不支持事务(transaction)。所以最近几年逐渐引入了InnoDB(另一种数据库引擎),后来就逐渐取代MyISAM。
一、存储结构
每个MyISAM在磁盘上存储成三个文件,它们以表的名字开头来命名。.frm文件存储表定义。.MYD(MYD)存储数据文件。.MYI(MYIndex)存储索引文件。
MyISAM只支持非聚簇索引
二、存储空间消耗
MyISAM存储空间是可被压缩,存储空间占用较小。MyISAM支持三种存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。
三、对事务支持情况
MyISAM强调的是性能,每次查询具有原子性,其执行速度比Innodb类型更快,但是不提供事务支持。
可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。
四、对锁支持
只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。
五、表行数
保存有表的总行数,如果select count(*) from table;会直接取出出该值。
为什么MyISAM会比Innodb 的查询速度快
INNODB在做查询的时候,要维护的东西比MYISAM引擎多
1)INNODB要缓存数据块,MYISAM只缓存索引块, 这中间还有换进换出的减少;
2)innodb寻址要映射到块,再到行,MYISAM 记录的直接是文件的OFFSET,定位比INNODB要快
3)INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护
应用场景选择
MyISAM适合:
(1)做很多count 的计算;
(2)插入不频繁,查询非常频繁;
(3)没有事务。
InnoDB适合:
(1)可靠性要求比较高,或者要求事务;
(2)表更新和查询都相当的频繁,并且行锁定的机会比较大的情况。
MySql------存储引擎(InnoDB,ISAM)相关推荐
- mysql dba系统学习(21)mysql存储引擎InnoDB
mysql存储引擎InnoDB 1,主体系结构: 默认7个后台线程,4个io thread(insert buffer.log.read.write),1个master thread(优先级最高),1 ...
- MySQL存储引擎InnoDB,MyISAM
MySQL存储引擎InnoDB,MyISAM 1.区别: (1)InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQ ...
- Mysql存储引擎Innodb的读写锁、行级锁
读写锁 Mysql存储引擎Innodb在处理并发读或者写的时候,通过两种类型的锁来解决并发问题,这两种锁通常称为共享锁和排他锁,也叫读锁和写锁. 读锁是共享的,即多个客户端可以同时读取同一资源. 写锁 ...
- 常用Mysql存储引擎--InnoDB和MyISAM简单总结
常用Mysql存储引擎--InnoDB和MyISAM简单总结 2013-04-19 10:21:52| 分类: CCST|举报|字号 订阅 MySQL服务器采用了模块化风格,各部分之间保持相对独立, ...
- mysql存储引擎InnoDB与MyISAM的区别
mysql存储引擎InnoDB与MyISAM的区别 众所周知,mysql之前的存储引擎是MyISAM,在5.6版本之后默认的存储引擎是InnoDB,那么两个存储引擎有什么区别? 一.MyISAM 存储 ...
- MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别
文章目录 MySQL存储引擎InnoDB.MyISAM和MEMORY介绍详解和区别 InnoDB存储引擎 特点 操作示例 创建InnoDB表 修改表引擎为InnoDB MyISAM存储引擎 特点 操作 ...
- MySQL存储引擎InnoDB和MyISAM的区别
文章目录 前言 一.MySQL 引擎 二.MyISAM和InnoDB特点 三.InnoDB和MyISAM的区别 总结 前言 面试经常会问到MySQL存储引擎的相关内容.常见的MySQL存储引擎有MyI ...
- 你居然还不知道Mysql存储引擎InnoDB分为内存架构、磁盘架构?
作者:陌北有棵树,Java人,架构师社区合伙人! 关于MySQL对于后端程序员的重要性不言而喻,而InnoDB也已经是MySQL默认的存储引擎.作为我们每天打交道的存储引擎,我们对它可能需要对它有更多 ...
- MySQL存储引擎InnoDB架构
目录 查看MySQL使用的存储引擎 磁盘文件 系统表空间 用户表空间 InnoDB逻辑存储结构 RedoLog文件 内存结构 缓冲池Buffer Pool RedoLogBuffer ChangeBu ...
- mysql引擎innodb与ndb比较_mysql存储引擎InnoDB 1.1、NDB 7.5对比
mysql存储引擎InnoDB 1.1.NDB 7.5对比 官网针对NDB和InnoDB进行了多方位的对比: TheNDBstorage engine is implemented using a d ...
最新文章
- 【机器学习算法专题(蓄力计划)】十、机器学习中必备的高等数学和线性代数基础
- 做一个完整的Java Web项目需要掌握的技能
- npm ERR! cb() never called!
- Ext JS 3.2.0发布(转)
- 使用requests库实现多线程下载
- 社保基金入市规模或达3000亿元
- 微服务设计 10 大反模式和陷阱!
- 金蝶服务器出纳系统无法启动,金蝶KIS专业版启用出纳系统时提示银行账号或银行名称不能为空...
- 平面设计师学习指南,平面设计都要学什么
- python画pr曲线_根据Precision和recall结果画PR曲线图
- Win7 开启自带WIFI进行手机抓包
- mp3中不可缺少的音乐
- 基于北斗观测值的智能手机GNSS定位研究
- html如何在页面打开时让鼠标光标停留在某个表单文本框,网页制作实用技巧
- halcon中放大图片
- MCGS pro 下载程序时,下位机磁盘空间不足解决办法
- rsa public key not find
- Geography V.S. Geometry
- 磨金石教育摄影技能干货分享:学会这些视频构图法手机也能拍大片
- animals中文谐音_animals中文谐音_张杰pretty white lies中文音译歌词
热门文章
- select查询之联合查询
- 亲测快捷高效的编写测试用例方法
- 【Python 实战基础】什么是PyQt6? 简单介绍一下PyQt6
- 开题报告里的基本内容写什么,预期效果又怎么写?
- Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 21 declared in lib
- 学会计为什么要学计算机基础,会计实操为什么要学习手工做账?
- 5万字 TypeScript入门系列(第四期)(建议收藏)
- if中逻辑运算符表达式运行顺序
- switch语句的执行顺序
- sap badi s4 MIGO屏幕实施测试