亿级用户表优化机制
靖西网牛牛动态域名 | 2016-10-12 |
1、根据用户UID进行分表。
2、根据用户创建分表,只用于内部转换字符串用户名与内部UID之间的对应关系,即用户名索引表。当提交用户名查询信息时,内部先查询索引分表转换成UID,再对UID分表进行查询
3、对已经创建的表进行分区:对xx表分成十个分区
alter table `xx`
partition by hash(uid)
partitions 10;
4、创建分区表:
CREATE TABLE `my_orders` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '表主键',
`pid` int(10) unsigned NOT NULL COMMENT '产品ID',
`price` decimal(15,2) NOT NULL COMMENT '单价',
`num` int(11) NOT NULL COMMENT '购买数量',
`uid` int(10) unsigned NOT NULL COMMENT '客户ID',
`atime` datetime NOT NULL COMMENT '下单时间',
`utime` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '修改时间',
`isdel` tinyint(4) NOT NULL DEFAULT '0' COMMENT '软删除标识',
PRIMARY KEY (`id`,`atime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*********分区信息**************/
PARTITION BY RANGE (YEAR(atime))
(
PARTITION p0 VALUES LESS THAN (2016),
PARTITION p1 VALUES LESS THAN (2017),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
附同步数据语句 Insert into aaa select * from aaa2;
[/post]