作为Java程序员相信大家对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。索引作为MySQL中比较重点的知识,在面试中出现的频率特别高。本人自认为对MySQL的索引知识相当了解,同事们工作中也都热情的称呼我为大佬。
为了进阿里,我特地花了1个月左右时间复习相关知识,自信满满的在简历上写了“精通MySQL”,想不到被阿里面试官狠狠虐了一把… 前半段和面试官相谈甚欢,聊着聊着我提到我们业务量比较大,每天大概有几百万的新数据生成,面试官来了兴趣......... 面试官:你们每天这么大的数据量,都是保存在关系型数据库中吗? 我:是的,我们线上使用的是MySQL数据库。 面试官:那你们有没有对查询做一些优化呢? 我:我们用了索引。
本以为我能够轻松的回答面试官的问题,但是接下来的提问直接让我懵了
你知道在MySQL 5.6中,对索引做了哪些优化吗?
你们创建的那么多索引,到底有没有生效,或者说你们的SQL语句有没有使用索引查询你们有统计过吗?
那排查的时候,有什么手段可以知道有没有走索引查询呢?
那什么情况下会发生明明创建了索引,但是执行的时候并没有通过索引呢?
哦,索引有关的知识我们暂时就问这么多吧。你们线上数据的事务隔离级别是什么呀?
以上问题我只能支支吾吾的回答一少部分,看着面试官逐渐失去问我问题的热情我知道这次面试我应该是凉了,后面不出大家所料我没有拿到阿里的offer,本以为做了充足的准备但我还是低估了阿里面试的难度,经过这次面试回去后我我找我了我在腾讯的好哥们要了一份MySQL的学习笔记,并且打算这次金三银四在面试一次阿里。