Featured image of post Mysql分库分表

Mysql分库分表

本文阅读量

分库分表

准备-数据生成脚本

生成用户表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#表结构
CREATE TABLE `t_user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `user_id` varchar(36) NOT NULL DEFAULT '',
 `name` varchar(22) NOT NULL DEFAULT '',
 `sex` tinyint(1) not null DEFAULT 0 comment '性别:1男 2女',
 PRIMARY KEY (`id`),
 KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

# 创建插入数据存储过程
delimiter $$
CREATE DEFINER=`root`@`%` PROCEDURE `add_user_memory`(IN n int) 
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i <= n) DO
INSERT INTO t_user (user_id,sex,name) VALUES (uuid(),floor(1+rand()*1),substring(MD5(RAND()),1,20));
SET i = i + 1;
END WHILE;
END
$$

#使用存储过程生成数据
call add_user_memory(1000)$$
delimiter ;

生成商品表

1
2
3
4
5
6
CREATE TABLE `t_product` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(36) NOT NULL DEFAULT '',
 `price` decimal(8,2) NOT NULL DEFAULT '0.0' COMMENT '商品价格',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

生成订单表

1
2
3
4
5
6
7
CREATE TABLE `t_order` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `uid` int(11) NOT NULL DEFAULT 0,
 `product_id` int(11) NOT NULL DEFAULT 0,
 `order_id` char(15) NOT NULL DEFAULT '' COMMENT '订单唯一id',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

演变过程

单机

1
2
3
4
# 用户10w条 商品 20w 订单100w

# 查询用户
select * from 
使用 Hugo 构建
主题 StackJimmy 设计