自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 问答 (1)
  • 收藏
  • 关注

原创 适合创建索引的场景

而二级索引列对应的id值并一定是连续的,所以这就导致当读取很多id值并不连续的聚簇索引记录时,这些聚簇索引记录分布在不同的页中,页号也是随机的,因此会造成大量的随机I/O。当我们再插入5的记录时,InnoDB会对主键进行判断,发现5没有大于7,所以会将5插入到67前面,但是再插入前还会判断,到底应该放到页0还是页1,放到页1的话,那么需要将67记录往后移动,这个行为称为页分裂。在通过二级索引+回表额度方式执行查询时,某个扫描区间中包含的二级索引记录数量越多,就会导致回表操作的代价越大。

2024-07-24 17:57:12 496

原创 InnoDB索引底层原理

先用二分法在最上层的“存储目录项页”中定位该主键值在哪个“目录项页”中,确定在哪个“目录项页”中时,再去对应的中间层的“目录项页”中,继续用二分法进行查询,直到确定出该主键值在最末层的哪个记录页中,在该记录页中依旧通过二分法对页目录(槽)进行定位,直至确定在哪一组中,最后在组中依次对比主键值即可。也讲这些页成为B+树的节点。上面说过,每创建一个索引,就会创建出一棵对应的B+树,二级索引也是,与聚簇索引的区别就是,列值不再是主键,,所以通过二级索引的B+树查询的话,最终需要一个“回表”的操作。

2024-07-22 21:20:45 1167

原创 InnoDB索引页的整体结构

InnoDB对分组的规定是,对于Infimum记录所在的分组只能有1条记录,Supremum记录所在的分组拥有的记录条数只能在1~8条之间,剩下的分组中记录的条数范围只能是4 ~ 8条之间。之后每插入一条记录,都会从page Directory页目录中找到对应记录的主键值比带插入记录的主键值大并且差值最小的槽(槽是一个组内最大的那条记录在页面中的地址偏移量,通过槽可以快速找到对应的记录的主键值),然后把该槽对应的记录的n_owned值加1,表示本组内又添加一条记录,直到该组中的记录数等于8个。

2024-07-20 11:58:57 664

原创 InnoDB数据存储结构

InnoDB究竟是怎么存储数据?数据格式是什么样子?

2024-07-17 11:22:55 682

原创 MySQL基础大全(看这一篇足够!!!)

自己看MySQL的总结,一方面加深自己的记忆,一方面与君共享

2024-06-28 15:42:05 948

原创 关于数据库索引

关于数据库索引,一些基础的知识

2024-06-14 19:22:47 444

原创 SQL基础入门

仅是总结SQL基础入门,里面的关键词语法之类,不完全包含MySQL,SQL Server,Oracle之类

2024-06-14 10:09:42 111

原创 SQL基础入门

SQL基础入门

2024-06-06 10:22:33 66

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除