mysql分表方法设计与实现

mysql分表方法设计与实现

为什么要分表:单表数据量大,分表提高查询效率,提高性能。

垂直切分:

的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非
常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业
务模块所使用的表分拆到不同的数据库中。根据不同的表来进行拆分,对应用程序的影响也
更小,拆分规则也会比较简单清晰。(这也就是所谓的”share nothing”)。

水平切分:有多张表结构相同的表,存放类型相同的字段,也就是把原来一张表的

数据切分到多张相同结构的表中。使原来表中数据记录数减少,提高查询效率。


常用方法有三种:

  1. 取模分表。

  2. 根据时间维度分表。

  3. 自定义hash分表。

实现原理:通过解析SQL语句的参数修改相关表名为实际表名。

一般用insert+select语句将原有表数据导入新的分表,或直接copy原表数据到分表。

例:根据ID取模分4张表,分表后把原数据复制如下,

insert into user0 ( id, name, extdo, hobbys, votes ) select * from user where id mod 4 = 0;

insert into user0 ( id, name, extdo, hobbys,  votes ) select * from user where id mod 4 = 1;

insert into user0 ( id, name, extdo, hobbys,  votes ) select * from user where id mod 4 = 2;

insert into user0 ( id, name, extdo, hobbys,  votes ) select * from user where id mod 4 = 3;




你可能感兴趣的:(mysql分表方法设计与实现)