ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL之InnoDB

2021-12-12 13:03:37  阅读:167  来源: 互联网

标签:存储 InnoDB MyISAM MySQL 磁盘 数据


能今天做好的事就不要等到明天。以梦为马,学习趁年华。

文章目录


前言

没有任何文笔,都是写给自己看的,算是对知识的复习,本篇都是InnoDB的八股文知识。

一、MySQL存储引擎

1. InnoDB特点

优势:独立表空间,支持MVCC,行锁设计,提供一致性非锁定读,支持外键;
特性:插入缓冲,二次写,自适应哈希索引,预读;
存储方式:使用聚集的方式存储数据,每张表的存储都是按主键顺序存放。

2.MyISAM和InnoDB区别

(1)InnoDB支持事务,MyISAM不支持事务;
(2)InnoDB支持外键,MyISAM不支持外键;
(3)InnoDB不支持全文索引,MyISAM支持全文索引;
(4)InnoDB支持表、行(默认)级锁,MyISAM支持表级锁;
(5)InnoDB表必须有唯一索引,MyISAM表可以没有;
(6)Innodb存储文件有frm、ibd,Myisam是frm、MYD、MYI;
(7)InnoDB不保存表的具体行数,MyISAM用一个变量保存了整个表的行数。

3.存储引擎选择

MySQL5.5后默认支持InnoDB为存储引擎,你如果对MyISAM和InnoDB不是特别的熟悉,推荐你选择InnoDB存储引擎。

二、InnoDB页

1.InnoDB页简介

InnoDB 是通过页方式将数据持久化到磁盘上的存储引擎,则即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。
页是MySQL中磁盘和内存交互的基本单位,也是MySQL是管理存储空间的基本单位 。

2.数据存储方式

为了解决磁盘读写IO慢的问题,InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小 一般为 16 KB。 

3. InnoDB行格式

 Compact 、 Redundant 、 Dynamic 和 Compressed 行格式 。

4. 行溢出

一个页一般是 16KB ,当记录中的数据太多,当前页放不下的时候,会把多余的数据存储到其他页中,这种 现象称为行溢出。

5.数据页组成

File Header ,表示页的一些通用信息,占固定的38字节。
Page Header ,表示数据页专有的一些信息,占固定的56个字节。
Infimum + Supremum ,两个虚拟的伪记录,分别表示页中的最小和最大记录,占固定的 26 个字节。 
User Records :真实存储我们插入的记录的部分,大小不固定。
Free Space :页中尚未使用的部分,大小不确定。 
Page Directory :页中的某些记录相对位置,也就是各个槽在页面中的地址偏移量,大小不固定,插 入的记录越多,这个部分占用的空间越多。 
File Trailer :用于检验页是否完整的部分,占用固定的8个字节。

标签:存储,InnoDB,MyISAM,MySQL,磁盘,数据
来源: https://blog.csdn.net/qq_32979219/article/details/121885754

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有