Mysql面试题总结

1. 背景

mysql作为最常用的中间件,还是有很多地方指导费学习的,看这些面试题是要理解的去记忆,然后看看mysql相关的书籍,就可以触类旁通了

2. 面试题

2.1 mysql 高度为3的b+ 树能存储多少数据

索引页存放的是索引值 + 指针,mysql 设计者为了避免每条数据都从磁盘进行读取,设计了页结构 用于磁盘和内存之间的交互,分为索引页和数据页
一个页16KB,磁盘存储数据的最小单元是扇区,扇区512byte ,B+ 树的每个节点只有一个页么
高度为2的时候。一个根节点和若干个叶子节点,根节点的指针数 * 单个叶子结点的记录数就是存储的数据量,假设表单 主键id,bigint占用8byte,指针在mysql中6byte, 一个索引页用16 * 1024、 14 = 1170.索引页有1170个索引记录,假设一行数据1KB,一个页就是16行数据,1170 * 16 = 18720行记录
三层B+ 树, 1170 * 1170 * 16 得到千万级的数据,进行1到3次的IO就可以获取

2.2 update 语句是锁表还是锁行

where 命中索引就是锁行,否则锁表
测试语句

sql 复制代码
set  @@autocommit = 0;

select @@autocommit;

update user set name = 'dyw11' where age = 40;

commit;

alter table user add index idx_age(age)

2.3 mysql 表设计时间列用datetime还是timestamp

相关推荐
吴佳浩19 分钟前
Python入门指南(六) - 搭建你的第一个YOLO检测API
人工智能·后端·python
踏浪无痕1 小时前
JobFlow已开源:面向业务中台的轻量级分布式调度引擎 — 支持动态分片与延时队列
后端·架构·开源
Pitayafruit1 小时前
Spring AI 进阶之路05:集成 MCP 协议实现工具调用
spring boot·后端·llm
ss2732 小时前
线程池:任务队列、工作线程与生命周期管理
java·后端
不像程序员的程序媛2 小时前
Spring的cacheEvict
java·后端·spring
踏浪无痕2 小时前
JobFlow 实战:无锁调度是怎么做到的
后端·面试·架构
shoubepatien2 小时前
JAVA -- 11
java·后端·intellij-idea
喵个咪2 小时前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:kratos-bootstrap 入门教程(类比 Spring Boot)
后端·微服务·go
uzong3 小时前
从大厂毕业后,到小公司当管理,十年互联网老兵的思维习惯阶段复盘
后端
追逐时光者3 小时前
一个 WPF 开源、免费的 SVG 图像查看控件
后端·.net