DAY 41 mysql
那么索引到底如何组织数据的呢?
为表中的一条条记录创建建立索引就跟为书的一页页内容创建目录很类似,但不太一样
不一样的是,创建索引分为两步:
1、以索引字段为key与数据对应,例如
create index idx_id on t1(id); -- key为id
创建索引
key
记录1 <- 1
记录2 <- 2
记录3 <- 3
记录4 <- 4
记录5 <- 5
。。。
2、以key为基础构建B+树,那么什么是B+树???
介绍下列树的原理结构以及特点-》讲明白下列树是如何提速查询的,以及每种树的问题和演变升级过程
二叉树
平衡二叉树
B树
B+树
特点总结:
1、节点内放的key+value:二叉树、平衡二叉树、B树
在叶子节点放value,其余节点只放key值:B+树
2、放等量数据的前提下,B+树的高度最低,查询速度最高
2、索引分类及区别
hash索引
b+树
3、 B+树索引分类
聚簇索引:构建原理,只能有一个
典型特点:叶子节点放key:一整条完整记录
辅助索引:构建原理,可以有多个
典型特点:叶子节点放的是key:该记录对应的主键id
4、覆盖索引与回表操作
命中辅助索引是否一定需要回表,如果不,解释原因
5、联合索引,索引的最左前缀匹配原则-》举例说明
6、索引下推技术
7、举例说明,命中索引之后是否一定对加速有明显的提升------》等同于回答了如何正确使用索引!!!
范围过大
索引字段占用空间过多
索引字段的区分度低
索引字段参与运算
索引字段放入函数
explain命令简介
8、常识
单表300w条记录-》硬盘空间200m
uv:user view单日累计用户访问
2-5w
pv:page view单日累计页面被点击的次数
20w-50w
最大并发(同时在线人数最大多少):一天内,某一时刻的并发量
1000人同时在线
数据库(读多写少):
累计2w的UV,平均每人往数据库中写入一条数据,
那么单日新增数据条数为2w条
2w条数据库-》占用空间大概2M
结论:以2-5w uv为例,单日数据库空间增长量从几M到几十M不等
数据库事务 举例说明事务特性ACID 事务开启的三种方式 事务可以设置保存点
数据库读现象 脏读 不可重复 幻读
数据库锁 粒度:行级< 表级 < 页级 级别越高并发越低,考虑到性能,innodb默认支持行级锁,但是只有在命中索引的情况下才锁行,否则锁住所有行,本质还是行锁, 但是此刻相当于锁表了
行级锁有三种算法:
Record lock
Gap lock
Next-key lock(默认)= Record lock+ Gap lock ------》 解决幻读问题
级别:排他、共享
排他
共享
使用方式:悲观、乐观
事务隔离机制 解决: 脏读 不可重复 幻读 方案: RR机制+innodb存储引擎的Next-key lock行级锁算法
MVCC:解释原理 快照读 select 。。。 当前读
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!