腾讯二面

腾讯二面面试官问一次sql执行的时候,要进行几次IO操作,我根据之前八股文回答说如果有索引,应该是三到四次,如果没有索引,应该是走全表扫描,和页表缓存的大小有关。
然后他又问你知道一次IO要花费多长时间吗,如果是第一次查询,不会命中缓存,好像也不会很慢
有没有大佬解释一下#牛客AI配图神器#
全部评论
mysql8.0以前的server层有缓存,所以如果是查询,那么先走缓存,缓存没命中再走引擎。引擎先走buffer pool,还是找不到再走io。走io看索引。一般b+树是三阶的,所以磁盘io三次。如果是全表扫描的话复杂一些,数据库会顺序读取每个数据块,假如说一个表有100个数据块,那就要io100次。一点点个人的愚见
4 回复 分享
发布于 03-10 11:53 安徽
其实可能不会这么多,mysql有缓存池和自适应hash索引,大部份索引页都会在缓存池,或者自适应hash索引把页直接建立hash表,使得只有数据页进行io加载
点赞 回复 分享
发布于 03-03 00:20 广东
佬啥部门呀
点赞 回复 分享
发布于 02-26 11:55 广东

相关推荐

Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
1
29
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务