腾讯二面

腾讯二面面试官问一次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 广东

相关推荐

1.自我介绍2.实习拷打3.mq如何能解决流量毛刺问题的4.mq如何实现数据从客户端到broker集群的5.mq发数据是用了什么协议,是怎么保证不丢数据的6.tcp是如何建立连接的,socket只是表层表现,底层原理呢7.broker集群是如何保证exactly one语义的8.broker集群是如何保证不丢数据的9.一个topic下有多个broker的实例,如果一个主broker挂了,是怎么切换的10.通过ISR水位线就能保证数据不丢失吗11.ack除了0,1,-1三种不同的确认的方式,如果想要保证数据不丢失,你能另外考虑比较好的实现方式吗12.wal为啥会有这种策略,为啥要先写日志呢13.broker是如何把message持久化的14.零拷贝是什么东西15.零拷贝和mmap还有sendfile关系是什么16.零拷贝解决了什么核心问题17.那你觉得为啥要有内核态和用户态区分呢18.操作系统是如何实现对内核态和用户态的区分19.你觉得可能是在页表上实现,那现在请完整考虑3种需要:1.感知到还没被分配的内存空间大小 2.申请满足需要的内存空间 3.用户态程序没法申请内核态的空间 假如你要设计并且实现这样的一个系统,你会如何实现呢20.页表的是解决什么问题21.页表最大能存多少页,每页大小是多少22.分页和分段有啥区别呢23.为啥分段会有内部碎片的问题,但是分页没有呢,你说分页大小小,分段也可以分段的很小也是几KB啊,那是为什么呢24.二级页表是解决什么问题的,它的原理是怎么样的25.讲讲java的gc26.图用什么数据结构存27.想要遍历图的所有节点如何遍历28.讲讲非递归遍历代码怎么写
查看28道真题和解析
点赞 评论 收藏
分享
评论
1
27
分享

创作者周榜

更多
牛客网
牛客企业服务