腾讯二面

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

相关推荐

评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客企业服务