水平拆分:按某个或某些个列的值哈希后,均匀的将数据拆分到多个同样的库or表里,这样就直接降低了单库单表的数据量,比如说拆分成1024个子表,就可以将单表的数据量降低3个数量级,原来一亿的表,现在单表10万数据,在单表上做复杂操作都可以很快速了。这样的缺点就是,原来只需要操作一个表,现在操作之前需要先知道要操作那张表,比如一个用户表,按uid分表:原来的SQL1: select * from users where uid=1025,现在得先知道uid是1025,然后知道1025%1024==1,SQL就变成了SQL2: select * from users_0001 where uid=1025,看起来对业务也是于侵入型的。怎么能对业务变得透明,这就需要一个中间件,帮我们自动的把SQL1变成SQL2,从而使得我们分不分库、分不分表,分多少个,代码都差不多,不用太多修改。