首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

心态崩了,我怎么知道实际生产环境的 B+ 索引多少

Q:在实际生产环境中,InnoDB 中一棵 B+ 索引一般多少?可以存放多少行数据? 关于这个问题最近好像在牛客上经常看到,感觉没啥意义,可能主要考察的是对 B+ 索引的理解吧。...回到文题,我们先从简单的入手,假设 B+ 只有两,即一个根节点和若干个叶子节点,如下图: image-20210825095007784 那么对于这棵 B+ 能够存放多少行数据,其实问的就是这棵...那么 B+ 数的根节点(非叶子节点)能够存储多少数据呢?...当然,这样分析其实不是很严谨,按照 《MySQL 技术内幕:InnoDB 存储引擎》中的定义,InnoDB 数据页结构包含如下几个部分: 想要深究的小伙伴可以去看书中的 4.4 章节,这里我就不再多分析了...OK,分析完高度为 2 的 B+ ,同样的道理,我们来看高度为 3 的: 根页(page10)可以存放 1170 个指针,然后第二的每个页(page:11,12,13)也都分别可以存放1170个指针

28810
您找到你想要的搜索结果了吗?
是的
没有找到

请你对Java中的了解多少

1200101班的学生信息表如图6.1所示,其中学生被分到了不同的学习小组,第一组组长是李华,组员王丽、张阳、赵斌; 第二组组长是孙琪,组员马丹; 第三组组长是刘畅,组员周天、黄凯 这些分组信息就构成了一棵...结点的层次: 规定根所在的层次为第1,根的孩子在第二,依次类推。 的深度或高度: 中结点最大的层数。 有序: 指中结点的各子树从左至右是次序的,否则称为无序。...根据的概念可知: 中任一个结点都可以零个或多个后继结点( 孩子),但最多只能有一个前趋结点(双亲);根结点无双亲,叶子结点无孩子; 祖先与子孙的关系是父子关系的拓展; 有序中兄弟结点之间从左至右次序之分...【例6.1】列出如图6.3 所示的的叶子结点、非终端结点、每个结点的度及深度。 根据的基本术语的相关概念: (1)叶子结点: B、D、F、G、H、I、J。...4.凹入表示法 凹入表示法采用逐缩进的方法表示横向凹入表示和竖向凹入表示。图6.6 所示为横向凹入表示。

1.2K50

MySQL|查询字段数量多少查询效率的影响

作者:高鹏 文章末尾他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 这个问题是最近一个朋友问我的。...但是需要注意的是,这里构建模板就会通过我们上面说的 read_set 去判断到底多少字段需要构建到模板中,然后才会调用 build_template_field 函数。...将第一行记录转换为 MySQL 格式(Innodb ) 这一步完成后我们可以认为记录已经返回给了 MySQL ,这里就是实际的数据拷贝了,并不是指针,整个过程放到了函数 row_sel_store_mysql_rec...到这里我们大概知道了,查询的字段越多那么这里转换的过程越长,并且这里都是实际的内存拷贝,而非指针指向。...三、回到问题本身 好了到这里我们大概知道全表扫描的访问数据的流程了,我们就来看看一下在全表扫描流程中字段的多少到底哪些异同点: 不同点: 构建的 read_set 不同,字段越多 read_set

5.6K20

MYSQL 8 VS MYSQL 5.7 在复杂查询中 到底好了多少

MySQL 8 最终是要大面积替换MYSQL5.7 , 之前的文字可能给人感觉MYSQL 8 还不如 MYSQL 5.7 ,实际上不然,任何东西新的一定有问题,解决解决就好了,在复杂查询这块 MYSQL...5.7 的确是和MYSQL 8 已经了分别,对于开发人员撰写SQL 什么帮助我们可以看看下面的一些例子。...排序后,速度了大幅度的提升,这说明在没有优化的情况下,MYSQL 8 对于排序和GROUP BY 这样的查询时有利的,并且随着提取的数据越多,则越快,这对 DEVELOPER 是一个好消息。...里面的子查询先 Materialized 一下,相对来说,如果 not exists not in 里面的要排除的数据越少越好,条件越精准越好,这样MYSQL 8 的 antijoin 的功能就会能帮助查询更有效的排除数据...的新功能对大部分查询语句是帮助的,但实际上在测试中有些简单的语句,MYSQL 8 并不能占据什么便宜,或者说还可能会比MYSQL 5.7 慢了“一眨眼” 的功夫。

2.6K30

MySQL 多表联合查询何讲究?

查询的时候也是先查询里边的子查询(即先查询 department 表),然后再执行外表的查询,我们可以看下它的执行计划: 可以看到,首先查询部门表,索引就用索引,没有索引就全表扫描,然后查询员工表,...所以在子查询中的可以不用 SELECT *,可以将之改为 SELECT 1 或者其他,MySQL 官方的说法是在实际执行时会忽略SELECT 清单,因此写啥区别不大。...为什么要小表驱动大表 在 MySQL 中,这种多表联合查询的原理是:以驱动表的数据为基础,通过类似于我们 Java 代码中写的嵌套循环 的方式去跟被驱动表记录进行匹配。...假设 D 驱动 E,那么执行流程大概是这样: for 100 个部门{     匹配 10000 个员工(进行B+查找) } 那么查找的总次数是 100+log10000。...假设 E 驱动 D,那么执行流程大概是这样: for 10000 个员工{     匹配 100 个部门(进行B+查找) } 那么总的查找次数是 10000+log100。

2.1K20

二叉:我多少个节点?

如果之前两篇二叉:看看这些的最大深度, 二叉:看看这些的最小深度都认真看了的话,这道题目可以分分钟刷掉了,愉快过节! 222.完全二叉的节点个数 给出一个完全二叉,求出该的节点个数。...这道题目的递归法和求二叉的深度写法类似, 而迭代法:二叉序遍历模板稍稍修改一下,记录遍历的节点数量就可以了。 递归遍历的顺序依然是后序(左右中)。...return 0; return 1 + countNodes(root->left) + countNodes(root->right); } }; 迭代法 如果对求二叉序遍历还不熟悉的话...,看这篇:二叉序遍历登场!。...看看这些的最大深度和 二叉:看看这些的最小深度都有提到过了。

1.1K20

mysql多少个端口号_mysql默认端口号(mysql端口号是多少)

mysql默认端口号(mysql端口号是多少) 2020-05-07 22:14:36 共10个回答 mysql的默认端口号是多少 mysql默认端口号为3306,修改端口号方法:修改配置文件/etc/.../etc/my.cnf文件,早期版本可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出.总结:注意修改的端口不要被占用,而且要有规划,不要轻意的总是调整数据库端口.还有就是安全保障...,记得与负责网络的人提前通知,以免端口无法正常使用. mysql端口号是多少 默认是3306,可以改 sqlserver默认端口是多少 SQLServer默认端口号为:1433MySQL默认端口号为:3306Oracle...默认端口号为:1521 mysql连接默认的端口是多少 mysql的默认端口是3306,你也可以修改/etc/my.cnf进行修改和安装的时候填写其他端口即可 a,mysql数据库服务器的默认端口是什么...SQLServer默认端口号1433,那MYSQL端口是多少?

7.6K60

mysql的limit查询竟然坑?

背景 最近项目联调的时候发现了分页查询的一个bug,分页查询总有数据查不出来或者重复查出。 数据库一共14条记录。 如果按照一页10条。那么第一页和第二页的查询SQL和和结果如下。...,查询结果显然不是按照某一列排序的(很乱)。...分析问题 为什么limit查询不加order by就会出现 分页查询总有数据查不出来或者重复查出? 是不是隐含的order排序? 此时explain登场(不了解的百度)。...索引的作用两个:检索、排序 因为两个SQL使用了不同的索引(排序规则),索引limit出来就会出现上面的问题,问题解开了。...总结 一说MySQL优化大家都知道explian,但是真正有价值的是场景,是让你的知识落地的场景。实践出真知。

14610

SQL学习笔记之MySQL查询的三解析

Mysqld的三结构:   SQL类型:     DDL:数据库对象定义语言        对库和表的定义     DML:操作语言     DCL:控制语言 结构化的查询语言:select * from...user;   执行该语句时:   1、连接:       验证 该用户的用户名、密码、端口号,并提供连接     连接作用: 1。...验证功能身份信息            3、提供一个专门的连接线程           (接受用户发来的SQL语句,并在执行完成之后返回最终结果,但不能读和执行sql语句,会将SQL语句丢给下一)...        7、接收存储引擎取到的二进制数据,结构化成表         8、查询缓存:SQL语句的 哈希值+数据结果(在修改类业务操作很多的情况下,并不适用)---》redis Tair(memcached...)   3、存储引擎         1、根据上层获取数据的方法,将数据提取出来         2、重新再交给SQL         3、是MYSQL数据库的核心,关系到数据库性能。

93630

MySQL到底多少种日志类型需要我们记住的!

MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志...其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。 这里简单总结一下这三者具有一定相关性的日志。...之所以说重做日志是在事务开始之后逐步写入重做日志文件,而不一定是事务提交才写入重做日志缓存, 原因就是,重做日志一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大小为...6、其他 二进制日志的作用之一是还原数据库的,这与redo log很类似,很多人混淆过,但是两者本质的不同: 作用不同:redo log是保证事务的持久性的,是事务层面的,binlog作为还原的功能,...四、总结 MySQL中,对于以上三种日志,每一种细化起来都可以够写一个章节的,这里粗略地总结了一下三种日志的一些特点和作用,以帮助理解MySQL中的事物以及事物背后的原理。

1.1K10

MySQL:InnoDB一棵B+可以存放多少行数据?

表结构信息包含MySQL表的元数据(例如表定义)的文件,比如表名、表多少列、列的数据类型啥的,不重要,我们先不管; ibd文件存储的是表中的数据,比如数据行和索引。...理解这个事非常重要,MySQL从磁盘加载数据是按照页来读取的,即便你查询一条数据,它也会读取一页16k的数据出来。 聚簇索引 数据库表中的数据都是存储在页里的,那么这一个页可以存放多少条记录呢?...当然,查询数据的时候,MySQL也不能把所有的页都遍历一遍,所以就有了索引,InnoDB存储引擎用B+的方式来构建索引。...万个,B+的高度还是3,这也就是说几万条数据和一千万条数据的查询效率基本上是一样的。...比如我们现在根据主键ID查询一条数据,select * from t5 where id = 6548215; ,查询时间显示用了0.010秒。 什么时候会到4呢?

1.2K30

MySQL到底多少种日志类型需要我们记住的!

)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。...其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。 这里简单总结一下这三者具有一定相关性的日志。...之所以说重做日志是在事务开始之后逐步写入重做日志文件,而不一定是事务提交才写入重做日志缓存, 原因就是,重做日志一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大小为...6、其他 二进制日志的作用之一是还原数据库的,这与redo log很类似,很多人混淆过,但是两者本质的不同: 作用不同:redo log是保证事务的持久性的,是事务层面的,binlog作为还原的功能,...四、总结 MySQL中,对于以上三种日志,每一种细化起来都可以够写一个章节的,这里粗略地总结了一下三种日志的一些特点和作用,以帮助理解MySQL中的事物以及事物背后的原理。

2.3K10

MySQL的一个表最多可以多少个字段

总结 ● MySQL Server最多只允许4096个字段 ● InnoDB 最多只能有1000个字段 ● 字段长度加起来如果超过65535,MySQL server就会拒绝创建表 ● 字段长度加起来...错误1 这个报错其实我们查询MySQL官方手册就可以查询到, 对于一行记录最大的限制是65535字节。为什么是65535,不要问我,手册也没说:)——一行数据里面字段长度定义64k,我也是醉了。...了65535的限制以后还有一个8126的限制是为什么呢? MySQL是分两的,MySQL Server + 存储引擎。...第2个问题其实是MySQL除了在Server做了一次限制还会在Innodb存储引擎在做一次限制。 innodb为了保证B+TREE是一个平衡树结构,强制要求一条记录的大小不能超过一个页大小的一半。...下面是innodb B+的结构,我们可以想象一下二分查找时,一个页的只有一条数据会是什么样子? 每个页只有一条数据的查找就变成了链表查找了。这样就没有二分查找的意义了。

13.3K91

MySQL查询优化妙招,这些工具深度解析慢日志

在本文中,我将向您推荐一些常用的MySQL慢日志分析工具,以及如何使用它们来提高数据库性能。 为什么需要慢查询分析工具? 在使用MySQL数据库时,可能会遇到查询变得缓慢的情况。...推荐的MySQL查询分析工具 以下是一些常用的MySQL查询分析工具,它们都可以帮助您识别和优化慢查询: 1....MySQL自带的慢查询日志 MySQL自带了慢查询日志功能,您可以通过配置MySQL来启用它。一旦启用,MySQL会记录执行时间超过指定阈值的查询语句。...其中包括 pt-query-digest工具,它可以分析MySQL查询日志并生成详细的报告,帮助您识别问题查询。...它可以帮助您识别慢查询中的问题,并提供针对性的建议,以改进查询性能。 MySQL查询分析工具是数据库性能优化中不可或缺的一部分。

58130
领券