略难的题。有很多人经常犯的错就是解释说数据量大了就要分库分表,但是这个解释不够深入。并且,这是一个很好的打开的分库分表话题,或者说引导面试官的机会,所以你要尽可能在回答的时候提到尽可能多的点,方便接下来面试官追问。
有些时候,面试官问这个问题,可能也是在质疑你为什么要分库分表,其它的手段如分区表、加从库能不能解决问题。
略难的题,兼具理论和实践的意义。当数据库遇到读写瓶颈的时候,有很多种解决方案,分区表和分库分表就是两种比较常用并且效果也比较好的方案。你在回答这个问题的时候,要注意结合实践来讨论。
略难的经典题目,兼具理论和现实意义。大部分公司在没有分库分表的时候,都是推荐使用自增主键的。因此在切换到分库分表之后,自增主键就不能用了,这时候就需要有额外的解决方案。在这里我给你一个比较高级的方案,可以确保你赢得竞争优势。
基础题,理论意义大于实践意义。一般来说这个题目只会出现在和分库分表有关的场景中,要想回答好这个问题,就要在讲清楚雪花算法原理的基础上,讨论清楚怎么灵活控制雪花算法中的段,以及怎么解决雪花算法应用不当带来的一些潜在问题。
最后还可以通过讨论怎么优化性能来赢得巨大的优势。
略难的题目,兼具理论和实践意义。这个问题的本质就是容量评估,而所有的容量评估都是有固定套路的,这个套路就是已有数据量 + 预期数据量 + 读写瓶颈三者合一。而难点则在于怎么评估预期数据量。
简单题。大部分公司只要是稍微上了点规模,都会考虑引入数据库主从集群,而后在业务查询的时候,就执行读写分离了。
要想在这个问题下刷好亮点,有两个点:一个是讨论主从延迟;而另外一个思路则是需要讨论如何强制走主库、强制走从库的问题。
略难的题。这个问题是指如果要是一个分页查询可能命中很多张表,应该怎么解决。解决思路有很多,不过每一种无损的解决思路都稍微有点复杂。所以你在准备面试的时候,要多背背。
在这个题目下,你只要能够把常见的解决方案说清楚,就已经赢得竞争优势了。
你要注意和优化分库分表中的分页查询这个问题相区别。
基础题。如果你使用过任何支持读写分离的中间件,你就知道它们都会提供接口给你指定走 SELECT 语句走主库。
回答这个问题最好就是在指出解决方案之后,总结一些自己的态度,就是 SELECT 走主库不是一个很好的实践,要小心使用。
有点难度的题,但是如果你已经掌握了改写 SQL 部分的内容,那么这个问题就是送分题。
回答这个问题的时候,要着重指出平均值的求法是不一样的,它最为特殊。而要想刷亮点,那么就要进一步讨论一个非常高级的聚合函数和 GROUP BY 结合的用法。你只要能够将聚合函数和 GROUP BY 这部分说出来,保证吊打你的竞争者。如果面试官本身没有做过分库分表中间件,你同样可以吊打他。
略难的题,但是如果你看过改写 SQL 以及如何求聚合函数之后,这个题就很简单了。
求平均值其实就一个关键点,改写 SQL 的时候要将 AVG 改写为 SUM 和 COUNT,最后再汇总计算平均值。