一、常见问题
1、为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们是如何对数据库进行垂直拆分或水平拆分。
2、如何设计可以动态扩容的分库分表方案?
3、如何把系统不停机迁移到分库分表?
二、为啥要分库分表
其实,这块肯定是扯到高并发了,因为分库分表一定是为了支撑高并发、数据量大两个问题。而且现在说实话,尤其是互联网公司类的公司面试,基本上都会来这么一下。分库分表是很普通的技术问题,不问实在不行,而如果你不知道那也实在说不过去。
说白了,分库分表是两回事,大家可别搞混了,可能光分库不分表,也可能光分表不分库。都有可能,先给大家抛出一个问题。
随着用户量的增长,每天活跃用户数上千万。每天单表新增数据,多个50万。目前1个表的总容量都已经达到两三千万啦!数据库磁盘容量不断消耗掉,高峰期并打达到了5000-8000。单机系统支撑不到现在。公司业务发展越好,用户就越多,数据量越大,请求量越大。那单个数据库一定扛不住。
假设把MySQL从单机变成了三机。
① MySQL从单机变成了三机,现在可以承受的并发增加了3倍。
② 将原来3千万数据从1个库分到了3个库,每个库就1/3的数据量,数据库服务器的磁盘使用率大大降低。
③ 原来1个单表是3千万数据&