电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

mysql存储引擎innodb底层存储结构VIP免费

mysql存储引擎innodb底层存储结构_第1页
1/35
mysql存储引擎innodb底层存储结构_第2页
2/35
mysql存储引擎innodb底层存储结构_第3页
3/35
Mysqlinnodb底层存储目录Contents01Part.02Part.04Part.03Part.扇区、磁盘块和数据页B+树存储结构索引组织表数据页结构和行记录扇区、磁盘块和数据页01Part.扇区扇区磁盘数据的最小单元,大小为512字节,在物理层面上是真实存在的;扇区的划分可以让硬盘更好的管理空间。磁盘块由于扇区太小,文件系统按照扇区去读取数据会相当慢,所以有了block(磁盘块)的概念。磁盘块由1个或者连续几个(2^n)相邻的扇区组成,是操作系统与磁盘交互的最小单位,操作系统可以把2^n个扇区数据一次性加载到内存进行快速读取。一个块大小=一个扇区大小*2的n次方,n是可以修改的,由操作系统决定n的大小;数据页数据页=2^n磁盘块,数据页是Mysql操作的最小单位,Innodb里面一般为16KB,lKB=1024字节=2个扇区,不过也可能是8KB、32KB或者其他值,这跟MySQL的存储引擎对数据的存储方式有很大的关系,innodb存储引擎页大小为16KB,16x1024=16384字节。可以存储英文字符16384个,中文8192个。innodb存储引擎页大小为16KB,16x1024=16384字节。可以存储英文字符16384个,中文8192个。拿常见的表举例,一般一行数据占用字节数在100~300个字节。一个数据页在剔除100个字节(存储其它信息)之后,(16384-100)/300=54.28行数据。考虑大多业务场景下(除开日志记录、大字段记录等),y一个数据页正常存储的行数量在16~60之间。表空间、段、区表空间:Innodb存储引擎按照表空间方式对数据进行存放,默认情况下,innodb建立共享的表空间文件,用于存储表所有的有关存储数据,也允许启动innodb_file_per_table为每个表设立自身的表空间,表的数据、索引和缓存BitMap页都放在自身表的表空间文件,但其它信息,如回滚信息、缓冲索引页还是放置在共享表空间。段:多个数据页的集合,innodb的预读比较倾向于对段范围进行预读;区:由连续的页组成,区的大小为1MB,innodb存储引擎会一次预先申请4~5个区;B+树数据结构02Part.B+树B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。查询数据拥有稳定的对数时间复杂;能更精确的进行范围查询;B+树由B树(自平衡树)演进而来。但由于B树的节点既存储路由(索引),也存储数据,所以相对于B树,B+树更适合范围查询。为什么用B+树而不是B树B+演进同一层级节点按大小顺序排序;节点数满则进行分裂;索引组织表03Part.Innodb索引组织表的数据插入Innodb表本质上是索引组织表(区别于堆表),以索引为驱动指引和操纵数据。换句话说,innodb就是按照B+树的方式去放置数据。对表插入数据,表数据在数据页中按照链表方式进行逻辑顺序排放,数据页空间满则进行依照B+树原则进行数据页分裂,索引键值自下而上成为中间节点或根节点。索引组织表Innodb表本质上是索引组织表(区别于堆表),表数据都按照主键进行顺序存放(逻辑顺序)。在innodb存储引擎表中,每个表都必须要有一个主键,如果没有显式的声明主键,则会按照以下方式进行创建:如果表存在非空唯一索引,如果存在,则使用该列作为主键;如果不存在非空唯一索引,Innodb存储引擎会自动创建一个6字节的指针作为主键,该主键对用户不可见;堆表:区别于索引组织表的顺序插入,堆表的数据在插入时是随机插入,因此从效率上,堆表的插入效率更高,因为省去了插入位置的判断;但索引组织表的查询效率更好,特别是范围查询。Innodb的B+树在实际业务情况下能存储多少的数据量?一个数据页大小为16K,16x1024=16384。索引页中,主要存储了键值和指针,键值以bigint为例,占8个字节,指针占6个字节,则8+6=14,能存储的键值和指针的组合数位16384/14=1170.28571。叶子节点存储着行记录,假如行记录以1k为例,1k已经能满足绝大部分业务场景。那么一页能存储的行数量为16k/1k=16。以一颗三层B+树为例,则可以计算:1171x1171x16=21,939,856。若以一颗四层B+树为例,则可以计算:1171x1171x1171x16=(>200亿)。在日常使用过程中,三层的B+树能满足绝大多数的场景。聚集索引和非聚集索引...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

mysql存储引擎innodb底层存储结构

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部