首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛奶燕麦不加糖
西安电子科技大学 数据分析师
关注
已关注
取消关注
🐎
@iworker:
Mysql八股
1. 日志1. Redo Log又叫做重做日志,InnoDB提供的用于保证 Crash Safety 的日志功能,保证了事物的持久性(Durability)。目的:通过WAL(Write-Ahead Logging)来保证Crash Safety;WAL顺序写入的特性也使得写操作更快(推迟了实际的随机写)。容量:大小固定。写入方式:循环写入(双指针):write pos:写入位置;check point:待擦除位置(对应的buffer pool中的脏页被实际刷盘后便会擦除redo log中的记录);日志内容:物理日志,记录的是“在某个数据页上做了什么修改”。原理:redo log中的内容代表还未被刷盘的变动,每个txn会生成一条redo log record,当修改的数据(脏页)实际刷盘后对应的redo log会被擦除。每一条redo log有prepare和commit两个状态,当系统重启时会检查redo log file并将所有处于commit的redo log records刷盘并擦除。2. Bin Log Binlog也称为归档日志,是Server层自己的日志。目的:用于备份恢复、主从复制。容量:不固定,可扩容(无大小限制)。写入方式:追加写,写满一个文件切换到下一个。日志内容:逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2这一行的c字段加1 ”。原理:备份恢复:Binlog 文件保存的是全量的日志,也就是保存了所有数据变更的情况,配合全量备份可以恢复数据库状态到任意时刻;主从复制:MySQL 主库在收到客户端提交事务的请求之后,会先写入 binlog,再提交事务,更新存储引擎中的数据,事务提交完成后,返回给客户端“操作成功”的响应;从库会创建一个专门的 I/O 线程,连接主库的 log dump 线程,来接收主库的 binlog 日志,再把 binlog 信息写入 relay log 的中继日志里,再返回给主库“复制成功”的响应;从库会创建一个用于回放 binlog 的线程,去读 relay log 中继日志,然后回放 binlog 更新存储引擎中的数据,最终实现主从的数据一致性。3. Undo LogUndo log又称为回滚日志,用于实现事务回滚与MVCC。Undo log的写操作发生在最开始,将更新前的原始数据保存在undo log中。Undo log在事务开始前产生。Undo log也会产生redo log。目的:实现原子性事务提交前可能发生的回滚;构建MVCC来实现事务间的隔离级别容量:不固定,可扩容。写入方式:追加写,写满一个文件切换到下一个。日志内容:每条undo log中的日志分为两部分,基本信息和操作信息基本信息记录了该条日志的undo类型,表id等等信息;操作信息根据操作类型不同分为三类(15445中的DELTA STORAGE):增:主键值,主键长等主键信息;删:主键信息以及旧的事物id,旧的row ptr(用于构建有序的undo版本链);改:如果不更新主键:主键信息以及旧的事物id,旧的row ptr,更新的信息;更新主键:两条,一条删除一条新增;Insert的undo log在提交后就可以删除了(只在回滚时起作用),delete和modify需要保留来实现undo版本链。Undo log页分为两大类:新增操作和删除/修改操作;新增操作的在提交后直接删除;原理:在操作真正数据之前将undo log写入磁盘之中,以保证可以实现撤销。实际数据行与undo logs之间通过row ptr连接构成undo版本链来实现MVCC。2. 索引2.1 联合索引联合索引:为多个属性构成的复合值建立索引;最左匹配原则,当遇到范围查询(>、<、between、like)就会停止匹配;将区分度高的字段放在前面,区分度低的字段放后面。SELECT * FROM `table` WHERE a = 1 ORDER BY b;如何建立索引?对(a,b)建索引,当a = 1的时候,b相对有序,可以避免再次排序。SELECT * FROM `table` WHERE a > 1 ORDER BY b;如何建立索引? 对(a)建立索引,因为a的值是一个范围,这个范围内b值是无序的,没有必要对(a,b)建立索引。SELECT * FROM `table` WHERE a IN (1,2,3) and b > 1;如何建立索引?还是对(a,b)建立索引,因为IN在这里可以视为等值引用,不会中止索引匹配,所以还是(a,b)。2.2 覆盖索引覆盖索引:通过联合索引来减少回表。例如一个表的主键是id,同时经常有通过a查b的需求:SELECT b FROM `table` WHERE a = 1;那么相比于为a建立索引,为(a, b)建立联合索引可以减少一次回表。2.3 聚簇索引从物理存储的角度来看,索引分为聚簇索引(主键索引)、二级索引(辅助索引)。聚簇索引是对有序文件的排序字段建立的索引B+Tree 的叶子节点存放的是实际数据,所有完整的用户记录都存放在主键索引的 B+Tree 的叶子节点里;辅助索引是对文件的非排序字段建立索引二级索引的 B+Tree 的叶子节点存放的是主键值,而不是实际数据。所以,在查询时使用了二级索引,如果查询的数据能在二级索引里查询的到,那么就不需要回表,这个过程就是覆盖索引。如果查询的数据不在二级索引里,就会先检索二级索引,找到对应的叶子节点,获取到主键值后,然后再检索主键索引,就能查询到数据了,这个过程就是回表。3. MVCCMVCC是为了解决读与写之间的阻塞问题,让读写互不阻塞:Writers do not block readers;Readers do not block writers.MVCC只能在Read Committed和Repeatable Read两个隔离级别下工作。Read Committed和Repeatable Read的区别是生成Read View的时机不同在隔离级别为读已提交(Read Committed)时,一个事务中的每一次 SELECT 查询都会重新获取一次Read View;当隔离级别为可重复读(Repeatable Read)的时候,就避免了不可重复读,这是因为一个事务只在第一次SELECT的时候会获取一次Read View,而后面所有的SELECT都会复用这个Read ViewMVCC解决了脏读问题,在视图的作用下事务无法读取未提交的版本。MVCC并没有解决丢失更新(Lost Update)的问题,为此额外添加了一条规则:更新数据都是先读后写的,而这个读,只能读当前的值,称为“当前读”(current read)。当前读会按照2PL协议加锁,事务提交时才释放。MySQL在Repeatable Read隔离界别下,不存在幻读问题。
点赞 4
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
12-22 13:06
蚌埠坦克学院 嵌入式软件开发
实习躺平是好事吗
很多人实习时最真实的状态,不是忙到飞起,而是“没人管、没任务、坐一天”。一开始觉得轻松,时间久了就开始慌:这样躺着,真的没问题吗?从短期看,实习没事做像是“福”。不用加班、不背锅、没人盯进度,甚至还能提前下班。对刚进入职场的人来说,这种低压环境很舒服,也容易让人产生“实习也不过如此”的错觉。但从长期看,这更像是“慢性祸”。实习的本质不是体验上班,而是用最低成本换一次真实职场训练。当你没有参与项目、没有接触核心工作、没有产出,你在简历和能力上都是“空白实习”。时间一过,这段经历几乎不可复用。实习躺平是不是好事,取决于你在“躺”的时候做了什么。如果只是刷手机、等下班,那是纯消耗;如果主动补基础、看...
实习没事做是福还是祸?
点赞
评论
收藏
分享
昨天 16:30
美的集团_后端开发工程师(准入职员工)
美的内推,美的内推码
说说大家都比较关心的加班和💰问题 目前没有加班,甚至运中也有大假了,而且简化汇报形式(不做ppt)是真的 💰前几天发了半个月的,比我想象中的要多! 还有一次性安家费、餐补啥的! 总之来说待遇是不错的世界五百强-美的集团2026届校园招聘启动啦【企业介绍】集智能家居、楼宇科技、工业技术、机器人与自动化和创新型业务五大业务板块为一体的全球化科技集团,世界五百强企业【招聘岗位】涵盖信息技术、研发技术、财务金融、管理等八大职业群,海量岗位任您选择 【工作地点】佛山、合肥、上海、广州、深圳等40+海内外城市 【投递链接】https://careers.midea.com/recruit-school...
美的集团公司福利 814人发布
点赞
评论
收藏
分享
12-09 16:37
西北大学 前端工程师
佬们,这个一般都问些什么,第一次面试没啥经验
牛客前端劝退第三人:
问前端
点赞
评论
收藏
分享
12-15 15:34
北京化工大学 嵌入式工程师
211本投几百家,只有三个垃圾offer,求助!
我该怎么改啊😭想从事嵌入式软件或者控制算法岗位,找实习没人要,干什么都不行,球球了🥺
程序员花海:
实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
985本硕1个中小厂of...
点赞
评论
收藏
分享
12-23 22:29
卓驭科技_HR(准入职员工)
卓驭(大疆车载)内推
卓驭 嵌入式中间件实习 面经写一写面经,回馈一下社区。⌚️timeline:五月底👋part1:自我介绍 && 项目介绍1. 项目里的内存占用,资源使用的性能评估?性能优化的思考?2. 端侧大模型的选型?3. 机器人比赛中最难的一个问题?技术方案的选择用了多长的时间?4. 之前实习的主要工作?方案是如何确定的?5. 对车载中间件的了解?6. 。。。忘了🤏part2:八股拷打1. 设计模式?平时开发有用到过哪一些设计模式吗?2. 对多态的了解?静态and动态?3. 虚函数里面父类和子类的交互?4. C++容器中vector和list的差异?5. vector的底层实现原理?扩...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
工作半年后更确定:我们依然不欠优绩主义什么
8182
2
...
圣诞节用 AI 做个牛客运营翻翻乐!(含代码)
2836
3
...
牛客2025年终报告重磅上线——揭晓你的年度修炼成就!
2573
4
...
#牛客2025仙途报告#居然是五颗星
2310
5
...
【2025-年终总结】25届毕业生果果牛这一年~
2181
6
...
大学废物离开优绩主义之后发现外面根本没下雨
2045
7
...
牛客年终报告,今日道爷我成了
1883
8
...
一个程序员的自救书|从酒吧陪玩DM到上岸大厂
1849
9
...
腾讯 微信支付一面面经
1611
10
...
在当下这个社会,在人生这个无常的时代,我真心希望你和各位牛友开心
1281
创作者周榜
更多
正在热议
更多
#
牛客2025仙途报告
#
9548次浏览
206人参与
#
我们是不是被“优绩主义”绑架了?
#
832次浏览
44人参与
#
2025年终总结
#
187255次浏览
3144人参与
#
你面试体验感最差/最好的公司
#
26399次浏览
439人参与
#
找工作,行业重要还是岗位重要?
#
86483次浏览
1727人参与
#
今年你最想重开的一场面试是?
#
9321次浏览
109人参与
#
礼物开箱Plog
#
2664次浏览
97人参与
#
一人说一个提前实习的好处
#
18429次浏览
265人参与
#
秋招落幕,你是He or Be
#
19701次浏览
338人参与
#
重来一次,你会对开始求职的自己说
#
8760次浏览
224人参与
#
工作中听到最受打击的一句话
#
11002次浏览
163人参与
#
为了秋招你都做了哪些准备?
#
29387次浏览
523人参与
#
实习没事做是福还是祸?
#
21502次浏览
319人参与
#
工作两年,想和老板谈涨薪怎么说
#
39023次浏览
176人参与
#
实习的内耗时刻
#
212431次浏览
1577人参与
#
离家近房租贵VS离家远但房租低,怎么选
#
13877次浏览
130人参与
#
这些公司卡简历很严格
#
82558次浏览
375人参与
#
拿到offer之后,可以做些什么
#
81212次浏览
430人参与
#
职场上哪些行为很加分?
#
308335次浏览
3491人参与
#
团建是“福利”还是是 “渡劫”
#
9515次浏览
179人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务