
面试
文章平均质量分 64
机智阳
资深程序员,高级架构师,少儿编程课程创作老师,工信部软件协会成员。
Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能,小程序相关领域知识分享。
展开
-
介绍一个InnoDB的数据页,和B+树的关系是什么?
16KB就意味着Innodb的每次读写都是以16KB为单位的,一次从磁盘到内存的读取的最小是16KB,一次从内存到磁盘的持久化也是最小16KB。通过这种方式,InnoDB利用B+树和数据页的组合,实现了高效的数据存储和检索。B+树的非叶子节点对应着数据页,其中存储着主键+指向子节点(即其他数据页)的指针。B+树的叶子节点包含实际的数据行,每个数据行存储在一个数据页中。通过B+树的搜索过程,可以从根节点开始逐层遍历,最终到达叶子节点,找到所需的数据行。原创 2024-12-08 19:35:42 · 349 阅读 · 0 评论 -
从B+树的角度分析为什么单表2000万要考虑分表?
我们都知道,Innodb中的数据页默认大小是16KB,并且B+树的每个节点都对应着一个数据页,包括根节点、非叶子节点和叶子节点。B+树的叶子节点包含实际的数据行,每个数据行存储在一个数据页中。理论上来说,只要磁盘空间够,存多少都可以,但是随着数据量的增多,查询效率会下降的,根据实际经验来说,单表抗2000万数据量,通过索引查询问题不大,那么这个数字确实是一个经验值,但是他背后是不是有一定的计算逻辑呢?有了以上的背景之后,我们就可以基于B+树的高级及结构,还有数据页的大小,来估算单表的数据量了。原创 2024-12-08 19:12:20 · 220 阅读 · 0 评论 -
什么是分库?分表?分库分表?
所以,当你的数据库的读或者写的QPS过高,导致你的数据库连接数不足了的时候,就需要分库分表了,**比较典型的分库场景就是我们在做微服务拆分的时候,就会按照业务边界,把各个业务的数据从一个单一的数据库中拆分开,分别把订单、物流、商品、会员等数据,分别放到单独的数据库中。**假如你的单表数据量非常大,因为并发不高,数据量连接可能还够,但是存储和查询的性能遇到瓶颈了,你做了很多优化之后还是无法提升效率的时候,就需要考虑分库分表了。还有我们谈到的针对不同的业务做拆分成多个数据库的这种情况,其实也是纵向拆分的一种。原创 2024-12-08 18:36:45 · 1090 阅读 · 0 评论