当前位置: 首页 > news >正文

mysql日常总结

1.innodb中数据是如何存储的?

数据以文件的形式(xxx.ibd)存储在磁盘中。文件的格式是页。每页16KB。页中存储数据行、页目录,还有页头,文件头,文件尾等。数据页中的记录按照「主键」顺序组成单向链表。因为链表插入和删除都很快,但是查找不是很方便,所有就引入页目录的概念。

将数据行进行分组,用槽记录每个分组中的最大记录。多个槽就组成了页目录。

为什么要分组?

因为如果不分组,每条记录都放1个槽,那么槽也会很多,所以就进行分组放到1个槽里。

对于主键索引,每个槽有1-8个数据行。

2.数据是如何查找的

因为有多个数据页,所有就需要有索引。索引的结构是B+树。B+树的每个节点都是一个数据页。从根节点开始,通过二分法快速定位到所要查找记录的页,定位到页以后,在该页内进行二分法,快速定位到数据所在的分组(槽),最后在分组内进行遍历查找。

3.聚簇索引和非聚簇索引的区别

区别在于叶子节点存放什么数据。

聚簇索引的叶子节点,存放的是实际数据,所有完整的用户记录都存放在聚簇索引的叶子节点。

二级索引的叶子节点存放主键值,而不是实际数据。

一张表只能有1个聚簇索引(主键),但可以有多个非聚簇索引

4. 回表

如果某个查询使用了二级索引,但查询的数据不是主键值,就需要在二级索引中找到主键,然后再去聚簇索引中获得数据行,这个过程就叫回表。

5.B+树的特点

  • 只有叶子节点才存放数据,非叶子节点仅用来存放目录项作为索引
  • 非叶子节点分为不同层次,通过分层降低每一层的搜索量
  • 所有节点按照索引键大小排序,构成一个双向链表,便于范围查询

总结二

1.innodb数据是按【数据页】为单位来读写的,默认数据页大小是16KB。每个数据页之间,通过双向链表的形式组织起来,物理上不连续,但逻辑上连续

2.数据页内包含用户记录,每个记录之间用单向链表的方式组织起来。

3.为加快在数据页内高效查询记录,设计了一个页目录。页目录存储各个槽(分组),且主键值是有序的,于是可以通过二分查找法的方式进行检索从而提高效率

4.为了高效查询记录所在数据页,innodb采用B+树做索引。每个节点都是一个数据页。

5.聚簇索引的叶子节点,存储的是实际数据。一个表只能有1个聚簇索引;

非聚簇索引叶子节点,存储的是主键值。一个表中可以有多个二级索引

6.使用二级索引查找数据时,如果查询的数据能在二级索引中找到,那么就是覆盖索引。

如果查找的数据不在二级索引里,那么就需要在二级索引中先找到主键,然后再在聚簇索引中通过主键获得数据行,这个过程就叫回表。

1.mysql null值会占用空间吗?

2.mysql怎么知道varchar(n) 实际占用数据的大小

3.varchar(n)中n最大取值为多少

4.行溢出后,mysql如何处理的

mysql每一张表的数据都存放在一个独立的.ibd文件。这个文件也被称为独占表空间文件。

表空间文件的结构是怎样的

表空间有段(segment)、区(extent)、页(page)、行组成。

innodb存储引擎的逻辑存储结构

数据库表中的记录都是按行进行存放的,每行记录根据不同的行格式,有不同存储结构。

页,记录是按照行来存储,但数据库的读写都是以页为单位。

区,B+树中每一层都是通过双向链表连接起来的,如果是以页为单位来分配存储空间,那么链表中相邻的两个页之间的物理位置并不连续,可能离得很远,那么磁盘查询时会大量随机IO。

解决这个问题,就是让链表中相邻的页的物理位置也相邻。范围查询性能也高。

所以在表中数据量大的时候,为某个索引分配空间的时候,就不再按照页为单位分配了,而是按照区为单位分配,每个区的大小为1MB。对于16KB的页来说,连续的64个页会被划为1个区,这样使得链表中相邻的页的物理位置也相邻,就有使用顺序IO了

http://www.jsqmd.com/news/1397326/

相关文章:

  • 智慧树自动刷课插件怎么装?3步跑通,把重复点击交给脚本
  • 罗意威和蒂芙尼在包公湖边的变现经——开封名品变现实录 - 你就像风一样
  • 【YOLOv8 追踪检测器】
  • LazyVim中配置C/C++自动格式化:clang-format与none-ls实战指南
  • 【leetcode复健-12】56. 合并区间-排序
  • 在线Windows鼠标主题转换器:ANI到XCUR格式转换原理与实现
  • 数学建模期末复习:攻克多选题的策略与核心考点解析
  • 把碧蓝航线的每日重复劳动交给托管脚本,一个月能省下多少时间
  • 神经网络激活函数全解析:从ReLU到GELU,如何选择与优化
  • Lenovo Legion Toolkit上手路线图:拯救者性能优化与硬件调校完整教程
  • Next.js 全栈实战:拆解 RealWorld 项目——React SSR 入门
  • 2026-2027大模型五大技术趋势:智能体、推理优化与垂域模型
  • C++ STL六大组件深度解析:从容器算法到内存管理实战指南
  • 因为漏掉了一个错误导致浪费了6个小时
  • 奇点大会的可持续AI议题,技术团队能做什么
  • 宜宾装修公司怎么选?宜宾老胡装饰等本土装企综合参考与家装避坑指南 - 收录优先
  • 2026 年一禾装饰|淮北装修工作室怎么选,家装挑选要点解析 - 收录优先
  • SAP Gateway 的 Payload Trace 使用实战
  • B站视频下载完整指南:DownKyi免费开源工具,一键搞定批量下载与格式转换
  • 2026 年莱山装修公司怎么选?智云装饰聊聊本地家装避坑要点 - 收录优先
  • 苏州特证黄金回收优势,资质齐全交易可溯源维权 - 资讯早知道
  • macOS开发Python程序打包成Windows可执行文件全攻略
  • 手机取消内存卡背后的技术演进与商业逻辑
  • 手机都在自动工作-----真无聊
  • 把 OData 测试变成可重复回归测试,深入理解 SAP Gateway Client 的 Response Validation
  • NCM转MP3还要在线传文件?这款免费离线工具三步搞定批量转换
  • 告别后台偷跑:用LenovoLegionToolkit一键关闭Vantage与Legion Zone冗余进程
  • 杭州7城区黄金回收门店汇总,多家连锁实体比价,处置闲置黄金不踩坑 - 一刻涨新知
  • AI实战 : Numpy图像处理与深度学习框架
  • 【HTB-CPTS】第22章 Command Injections(测验部分)