--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 存储引擎相关推荐

  1. 浅析Mysql InnoDB存储引擎事务原理

    浅析Mysql InnoDB存储引擎事务原理 大神:http://blog.csdn.net/tangkund3218/article/details/47904021

  2. MySQL Innodb存储引擎使用B+树做索引的优点

    对于数据库来说,索引和表数据都是存放在磁盘上的,一般使用B+树作为索引 MySQL Innodb存储引擎使用了B+树作为索引的优点,主要有以下原因: 1.索引和表数据都是存放在磁盘上的,如果磁盘上的数 ...

  3. MySQL InnoDB 存储引擎索引那些事儿

    InnoDB 存储引擎中,表是根据主键顺序组织存放的,称为索引组织表.每个表都有一个主键,如果没有显示定义主键,则会选择第一个创建的非空唯一索引作为主键,如果没有非空唯一索引,InnoDB引擎则自动创 ...

  4. 为什么MySQL InnoDB 存储引擎要用B+树做索引,而不用B树?

    为什么MySQL InnoDB 存储引擎 要用B+树做索引,而不用B树? (1)B+树空间利用率更高,可减少I/O次数 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存 ...

  5. mysql InnoDB存储引擎的介绍

    mysql InnoDB存储引擎的介绍 概念 1.InnoDB是MySQL默认的存储引擎,如果需要其不支持的特性,则考虑使用其他存储发动机. 2.InnoDB采用MVCC支持高并发,实现四个标准隔离级 ...

  6. MySQL InnoDB存储引擎

    呵呵哒... MySQL体系结构和存储引擎 首先要搞懂的是什么是数据库,什么是数据库实例. 数据库:物理操作系统文件或其他形式文件类型的集合. 实例:MySQL数据库由后台线程以及一个共享内存区组成, ...

  7. 数据结构与索引-- mysql InnoDB存储引擎索引

    索引与算法 索引是我们在应用开发过程中程序数据可开发的一个重要助力.也是一个重要的研究方向,索引太多,应用的性能可能受到影响,如果索引太少,对查询性能又会有制约.我们需要找到一个合适的平衡点,这个对性 ...

  8. MySQL InnoDB 存储引擎文件

    InnoDB 存储引擎文件,为该存储引擎独有,包括表空间文件和重做日志文件. 1.表空间文件 InnoDB存储引擎的数据按照表空间进行存放,默认配置下有一个初始大小和默认名的文件,通过以下命令查看: ...

  9. 谈谈MySQL InnoDB存储引擎事务的ACID特性

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 狼哥一直对数据库Mysql这块没有进行过系统的深入学习,今天看到一篇文章写的还不错,特意分享一下,我不能保证文章中所 ...

最新文章

  1. 跨平台代码换行符的问题处理
  2. 如何使用ElasTest实现测试的可观察性
  3. 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(1)...
  4. 矩阵运算最快的库有哪些
  5. Nhibernate 对view 查询的几种方法
  6. java分页 jar_零基础学java之javaEE,分页
  7. AutoLayout的那些事儿
  8. Spark源码分析之DiskBlockMangaer分析
  9. miniui 样式第一次加载不出来_matplotlib--修改样式
  10. Pyinstaller打包附带DLL、图标和压缩EXE方法
  11. opencv 图像卷积运算函数filter2D()
  12. javaweb关于404、500等错误页面的处理
  13. 强烈推荐APP破解常用工具集合!最强总结
  14. 【web前端特效源码】使用HTML5+CSS3制作一个会动的文字闪动动画效果~~适合初学者~超简单~ |前端开发|IT软件
  15. 古体字与简体字对照表_王力_简体字与繁体字对照表
  16. 俄亥俄大学计算机科学系,俄亥俄大学课程及专业设置
  17. Iphone 开发播放音频无声音
  18. 一元多项式加减法的C++实现
  19. 在js中实现新窗口打开页面
  20. 基于GC - MS的代谢组学研究揭示:SD大鼠和Wistar大鼠之间存在系统的代谢差异及乙醇灌胃反应差异

热门文章

  1. TCP/IP Socket 服务器对接
  2. android+读书笔记
  3. c语言中char类型转int类型
  4. python考证书-Python全国二级等级考试(2019)
  5. 2021-2027全球与中国空气监测设备市场现状及未来发展趋势
  6. Windows 7/8 创建WIFI热点
  7. C++中string.size()函数 踩坑
  8. XMap 简易的Java-xml映射工具类库
  9. STM32开发笔记113:ADS1258驱动设计——读取温度值
  10. 关于Idea合并不同分支代码你怎么看