本文作者:kris

详解MySQL中InnoDB的存储文件-mysql innodb存储的文件结构

kris 2025-01-15 23:30:06 2
详解MySQL中InnoDB的存储文件-mysql innodb存储的文件结构摘要: mysql innodb建立普通索引怎么写?先从数据结构的角度来答。题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点...

mysql innodb建立普通索引怎么写?

先从数据结构的角度来答。

题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。

这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据。

从Mysql(Inoodb)的角度来看,B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。

那么Mysql如何衡量查询效率呢?磁盘IO次数,B-树(B类树)的特定就是每层节点数目非常多,层数很少,目的就是为了就少磁盘IO次数,当查询数据的时候,最好的情况就是很快找到目标索引,然后读取数据,使用B+树就能很好的完成这个目的,但是B-树的每个节点都有data域(指针),这无疑增大了节点大小,说白了增加了磁盘IO次数(磁盘IO一次读出的数据量大小是固定的,单个数据变大,每次读出的就少,IO次数增多,一次IO多耗时啊!),而B+树除了叶子节点其它节点并不存储数据,节点小,磁盘IO次数就少。这是优点之一。

另一个优点是什么,B+树所有的Data域在叶子节点,一般来说都会进行一个优化,就是将所有的叶子节点用指针串起来。这样遍历叶子节点就能获得全部数据,这样就能进行区间访问啦。

至于MongoDB为什么使用B-树而不是B+树,可以从它的设计角度来考虑,它并不是传统的关系性数据库,而是以Json格式作为存储的nosql,目的就是高性能,高可用,易扩展。首先它摆脱了关系模型,上面所述的优点2需求就没那么强烈了,其次Mysql由于使用B+树,数据都在叶节点上,每次查询都需要访问到叶节点,而MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql(但侧面来看Mysql至少平均查询耗时差不多)。

总体来说,Mysql选用B+树和MongoDB选用B-树还是以自己的需求来选择的。

ruby程序员快6年了,不知道Mysql中MyISAM、InnoDB两种表类型,是不是弱爆了?

如果6年了还分不清,是有一点弱。不过大公司都是分工很明确,一个萝卜一个坑。每天都是重复不停的敲代码。建议如果需要全面发展,可以去小公司,或者外包公司。短时间就必须完成一个项目,而且不停的接新项目,这样可以锻炼自己,还可以学习到更多的知识.

详解MySQL中InnoDB的存储文件-mysql innodb存储的文件结构

图片来源:网络

谢谢邀请。

这个要看个人情况而定了。

有的公司分工明确,写代码跟数据库设计是分开的,基本没有机会接触到自己工作之外的东西了。公司这样分工虽然工作效率提高了,但是不利于自己的发展,一般工作个两三年就可以跳槽了,不然每天做的都是重复的事。

去小的创作型公司练练对自己的技术提升帮助很大,也可以做一些管理上的工作😊。不要一辈子做技术,做基础开发累。

不要让未来的你,讨厌现在的自己。

Mysql中MyISAM和InnoDB的区别有哪些?

InnoDB特性

1.支持事务,实现事务的四种隔离级别,CAID特性。

2.是行级锁,并发性能高。

3.支持外键

4.可利用日志进行数据回滚。

5.是聚集索引(聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同),必须有主键,

MyISAM特性

1.不支持事务

2.写操作为表级别

3.不支持外键

4.非聚集索引,不一定需要主键

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/23859.html发布于 2025-01-15 23:30:06
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享