mysql innodb 存储引擎
--MySQL 结构有两部分组成
1.MySQL server 层
2.存储引擎层
--注:到 存储引擎层之前都属于 MySQL server 层
MySQL 5.1到 5.7 ,大版本 没有变化 ,小版本 唯一的变化就是 存储引擎 ,MySQL server 层没有变过
在 MySQL 5.5之后 包括 5.5 ,默认的存储引擎都是 innodb (engine=innodb) ,但是 在 5.5之前的版本,默认的存储引擎是 myisam ,基于表的
所以 如果是 5.5之前的版本,创建表的时候 需要指定 engine=innodb ,否则创建出来的表 都是 myisam 存储引擎的
基本上 5.1之后就是 5.5了;期间都是一个跳板
转存失败重新上传取消
MySQL组成部分:
1.连接池组件
2.管理服务和工具组件
3.SQL接口组件
4.查询分析器组件
5.优化器组件
6.缓冲组件
7.插件式存储引擎
8.物理文件
存储引擎是基于表的,不是基于数据库的
mysql 的核心就是存储引擎
MySQL 表存储引擎
MySQL 插拔式的存储引擎架构提供了一系列标准的管理和服务支持
存储引擎是基于表的,而不是基于数据库的
根据具体的应用选择合适的存储引擎
OLTP:在线联机事物系统,---读多写少,比如:电商,支持行级锁,支持外键
OLAP:在线联机分析系统,---这个接触的几率很小
各类存储引擎介绍
一、innodb 存储引擎
1.支持事务,面向在线事务处理(OLTP)方面应用,支持行级锁,支持外键
2.通过多版本并发控制MVCC来获得高并发性,并且实现了sql标准的四种隔离级别(默认 repeatable)
3.提供插入缓冲(insert buffer),二次写(double write) ,自适应哈希索引(ahi),预读(read ahead)
4.对于表中的数据的存储,innodb 采用 clustered ;每张表的存储都按照主键的顺序存放,如果没有显示的为表定义主键,
innodb 会为每一张行生产一个6字节的rowid,作为主键
1>支持事务,行级锁,支持外键
2>多版本并发控制(mvcc)来获得高并发性
3>sql 标准的四种隔离级别:可重复读、不可重复读、串行读、脏读
4>innodb 三大特性:insert buffer ,double write ,ahi
5>一定要为每一张新建的表指定主键,不要让系统自动创建
二、 Myisam 存储引擎
1.不支持事务,表锁,全文索引,对OLAP在线分析处理,操作速度快
2. Myisam 存储引擎表由 MYD 和 MYI 组成,myd用来存放数据文件,myi 用来存放索引文件
3.从 MySQL 5.0开始 MySQL默认支持 256T 单表数据
4.对于 Myisam 存储引擎表,MySQL数据库只缓存其索引文件,数据文件的缓存交由操作系统本身来完成,区别于使用LUR算法缓存数据的大部分数据库
1>不支持事务,表级锁,全文索引,对OLAP 在线分析系统,操作速度快
2>MYD 存放数据文件,MYI 存放索引文件
3>从 MySQL5.0 开始,MySQL 默认支持 256T单表数据
4>对于 myisam 存储引擎表,MySQL数据库只缓存其索引文件,数据文件的缓存交由操作系统本身来完成,区别于使用LUR算法缓存数据的大部分数据库
三、NDB 存储引擎
1.数据全部放在内存中,因此主键查找的速度极快,可以线性提高数据库性能,高可用,高性能集群系统
2.NDB的存储引擎的连接操作是在MySQL数据库层完成,而不是在存储引擎层完成,因此复杂的连接操作需要巨大的网络开销
MySQL cluster 采用的就是NDB 存储引擎,跳过存储引擎,直接调用数据,这个就是不选择MySQL cluster的原因(电商不会使用)
四、memory存储引擎
1.将表中的数据存放在内存,如果数据库重启或者发生崩溃,表中的数据全部丢失;适用于存储临时数据临时表,数据仓库中的维度表,
默认使用 hash 索引不是 B树索引
2.只支持表锁,并发性能差,不支持text和blob类型,存储变长字段varchar时,是按照定常字段char方式进行,浪费内存空间
--注:理解位一张内存表,一张临时表;并发性能差,会浪费内存空间
五、archive存储引擎,只支持insert和select查询;
六、federated存储引擎,不存放数据,只是指向一台远程MySQL数据库服务器上的表
七、maria存储引擎,缓存数据和索引文件,行锁,提供MVCC功能,支持事务和非事务安全的选项支持,
以及更好的BLOB字符类型处理性能
maria存储引擎,是mariadb 默认的存储引擎,和innodb 是一样的,MVCC(多版本并发控制)
---总结
innodb 三大特性:
插入缓冲(insert buffer);二次写(double write);自适应哈希索引(ahi)
clustered 聚集存储
在生产环境中,新建表必须指定创建主键,否则系统会生成 UID ,消耗系统性能
innodb的并发性强,因为有行级锁
myisam: MYD 存储数据文件; MYI 索引文件,只缓存索引 ,数据文件还是在磁盘上
innodb: ibd 所有的文件是放在一起的,数据和索引都缓存,所以innodb速度快
[root@rc-mysql mysql]# ll user.*
-rw-rw---- 1 mysql mysql 10684 Apr 28 2016 user.frm
-rw-rw---- 1 mysql mysql 7500 May 22 16:44 user.MYD
-rw-rw---- 1 mysql mysql 4096 May 22 16:44 user.MYI
frm 是表结构,在innodb和myisam 都是这个后缀
MYD Myisam 存储引擎的数据文件
MYI Myisam 存储因为的索引文件
innodb 存储引擎的后缀名 ibd ,数据和索引在一个文件里面
innodb表 数据就是索引,索引就是数据
---总结:
innodb和myisam 的区别
1.事务(innodb 支持,myisam 不支持)
2.锁粒度(innodb 行级锁 ,myisam表级锁 )
3.并发(innodb 支持多版本并发控制-MVCC ,获得高并发)
4.缓存文件(innodb 缓存数据和索引,myisam 只缓存索引,不缓存数据)
5.文件名后缀(innodb : ibd;myisam MYD MYI )
6.5.6以后包括5.6 都支持全文索引,但是不支持中文的(innodb 在 5.6 以前不支持全文索引)
----在5.5包括5.5,默认存储引擎都是innodb
----(engine=innodb),但是5.5之前的版本,存储引擎都是 myisam ,基于表的
7.innodb 执行 delete 的时候 是一行一行删除,因为有行级锁,并且不会将表删除
myisam 是删除整张表,然后在重新创建表结构一样的表
8.select count(*);
myisam 比 innodb 快,因为里面有一个计数器,当有数据进入的时候,计数器会进行统计而innodb 需要对表进行一次全表扫描
----问题点
1.MySQL不支持全文索引?
5.6开始支持全文索引,但是只能查询非中文的
2.MySQL快是因为不支持事务?
innodb 支持事务
3.当表大于一千万的时候,MySQL性能会急剧下降?
是;但是可以不让一张表大于一千万,分表;
或者涉及架构,比如百度架构(代理方式)
mysql innodb 存储引擎相关推荐
- 浅析Mysql InnoDB存储引擎事务原理
浅析Mysql InnoDB存储引擎事务原理 大神:http://blog.csdn.net/tangkund3218/article/details/47904021
- MySQL Innodb存储引擎使用B+树做索引的优点
对于数据库来说,索引和表数据都是存放在磁盘上的,一般使用B+树作为索引 MySQL Innodb存储引擎使用了B+树作为索引的优点,主要有以下原因: 1.索引和表数据都是存放在磁盘上的,如果磁盘上的数 ...
- MySQL InnoDB 存储引擎索引那些事儿
InnoDB 存储引擎中,表是根据主键顺序组织存放的,称为索引组织表.每个表都有一个主键,如果没有显示定义主键,则会选择第一个创建的非空唯一索引作为主键,如果没有非空唯一索引,InnoDB引擎则自动创 ...
- 为什么MySQL InnoDB 存储引擎要用B+树做索引,而不用B树?
为什么MySQL InnoDB 存储引擎 要用B+树做索引,而不用B树? (1)B+树空间利用率更高,可减少I/O次数 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存 ...
- mysql InnoDB存储引擎的介绍
mysql InnoDB存储引擎的介绍 概念 1.InnoDB是MySQL默认的存储引擎,如果需要其不支持的特性,则考虑使用其他存储发动机. 2.InnoDB采用MVCC支持高并发,实现四个标准隔离级 ...
- MySQL InnoDB存储引擎
呵呵哒... MySQL体系结构和存储引擎 首先要搞懂的是什么是数据库,什么是数据库实例. 数据库:物理操作系统文件或其他形式文件类型的集合. 实例:MySQL数据库由后台线程以及一个共享内存区组成, ...
- 数据结构与索引-- mysql InnoDB存储引擎索引
索引与算法 索引是我们在应用开发过程中程序数据可开发的一个重要助力.也是一个重要的研究方向,索引太多,应用的性能可能受到影响,如果索引太少,对查询性能又会有制约.我们需要找到一个合适的平衡点,这个对性 ...
- MySQL InnoDB 存储引擎文件
InnoDB 存储引擎文件,为该存储引擎独有,包括表空间文件和重做日志文件. 1.表空间文件 InnoDB存储引擎的数据按照表空间进行存放,默认配置下有一个初始大小和默认名的文件,通过以下命令查看: ...
- 谈谈MySQL InnoDB存储引擎事务的ACID特性
2019独角兽企业重金招聘Python工程师标准>>> 1.前言 狼哥一直对数据库Mysql这块没有进行过系统的深入学习,今天看到一篇文章写的还不错,特意分享一下,我不能保证文章中所 ...
最新文章
- 跨平台代码换行符的问题处理
- 如何使用ElasTest实现测试的可观察性
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(1)...
- 矩阵运算最快的库有哪些
- Nhibernate 对view 查询的几种方法
- java分页 jar_零基础学java之javaEE,分页
- AutoLayout的那些事儿
- Spark源码分析之DiskBlockMangaer分析
- miniui 样式第一次加载不出来_matplotlib--修改样式
- Pyinstaller打包附带DLL、图标和压缩EXE方法
- opencv 图像卷积运算函数filter2D()
- javaweb关于404、500等错误页面的处理
- 强烈推荐APP破解常用工具集合!最强总结
- 【web前端特效源码】使用HTML5+CSS3制作一个会动的文字闪动动画效果~~适合初学者~超简单~ |前端开发|IT软件
- 古体字与简体字对照表_王力_简体字与繁体字对照表
- 俄亥俄大学计算机科学系,俄亥俄大学课程及专业设置
- Iphone 开发播放音频无声音
- 一元多项式加减法的C++实现
- 在js中实现新窗口打开页面
- 基于GC - MS的代谢组学研究揭示:SD大鼠和Wistar大鼠之间存在系统的代谢差异及乙醇灌胃反应差异