当前位置:网站首页>Mysql千万级别水平分表优化
Mysql千万级别水平分表优化
2022-07-19 05:02:00 【IT界刘德华】
需求:随着数据量的增加单表已经不能很好的支持业务,千万级别数据查询缓慢
Mysql数据优化方案:
- 方案一:使用myisam进行水平分表优化
- 方案二:使用mysql分区优化
一:Myisam水平分区
1、创建水平分表 user_1:
-- 创建水平分表
create table user_1(
id varchar(50) PRIMARY key COMMENT '主键id',
user_name varchar(50) DEFAULT null COMMENT '用户名称',
creator varchar(50) DEFAULT null COMMENT '创建者',
create_date datetime DEFAULT null COMMENT '创建时间',
updater varchar(50) DEFAULT null COMMENT '更新者',
update_date datetime DEFAULT null COMMENT '更新时间'
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户1表';
2、创建水平分表 user_2:
create table user_2(
id varchar(50) PRIMARY key COMMENT '主键id',
user_name varchar(50) DEFAULT null COMMENT '用户名称',
creator varchar(50) DEFAULT null COMMENT '创建者',
create_date datetime DEFAULT null COMMENT '创建时间',
updater varchar(50) DEFAULT null COMMENT '更新者',
update_date datetime DEFAULT null COMMENT '更新时间'
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户2表';
3、创建水平分表 user
-- 创建总表
create table user(
id varchar(50) PRIMARY key COMMENT '主键id',
user_name varchar(50) DEFAULT null COMMENT '用户名称',
creator varchar(50) DEFAULT null COMMENT '创建者',
create_date datetime DEFAULT null COMMENT '创建时间',
updater varchar(50) DEFAULT null COMMENT '更新者',
update_date datetime DEFAULT null COMMENT '更新时间'
)ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=LAST UNION=(
`user_1`,`user_2`);
4、新增添加分区 user_3
create table user_3(
id varchar(50) PRIMARY key COMMENT '主键id',
user_name varchar(50) DEFAULT null COMMENT '用户名称',
creator varchar(50) DEFAULT null COMMENT '创建者',
create_date datetime DEFAULT null COMMENT '创建时间',
updater varchar(50) DEFAULT null COMMENT '更新者',
update_date datetime DEFAULT null COMMENT '更新时间'
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户3表';
初始化数据
-- 插入数据
insert into user_1(`id`,`user_name`,`create_date`,`update_date`) values ('1','张三',now(),now());
insert into user_1(`id`,`user_name`,`create_date`,`update_date`) values ('2','李四',now(),now());
insert into user_2(`id`,`user_name`,`create_date`,`update_date`) values ('1','王五',now(),now());
insert into user_3(`id`,`user_name`,`create_date`,`update_date`) values ('3','赵六3',now(),now());
insert into user(`id`,`user_name`,`create_date`,`update_date`) values ('4','老赵1',now(),now());
验证数据结果:通过
5、重新添加分区
alter table user UNION=(`user_1`,`user_2`,`user_3`);
参数说明
1:分表ENGINE必须为:MyISAM,总表必须为MRG_MyISAM
2:INSERT_METHOD:向总表插入数据默认到哪个位置取值:
0:不允许插入
1:允许插入
FIRST:merge的第一张表
LAST:merge的最后一张表
出现异常错误
1168 - Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
问题定位:
- 分表MERGE引擎仅适用于MYISAM表
- union了不存在的表或者不在同一个数据库中的表
- 表的结构不一致
官网地址:https://dev.mysql.com/doc/refman/8.0/en/merge-storage-engine.html
边栏推荐
- Where is Jay Chou's album "the greatest work"? Dangbei box enjoys chairman Zhou's latest MV
- 中国黄芪注射液市场评估与投资战略报告(2022版)
- 力扣(LeetCode)199. 二叉树的右视图(2022.07.18)
- MySQL for enterprise development (I)
- UnityVR-机械臂场景3-手爪
- Unityvr robot Scene 1 setup scene
- 新概念三册笔记-01
- 提交时显示找不到匹配的主机密钥类型。
- Leetcode 199 Right view of binary tree (2022.07.18)
- cmd执行命令出现SecurityError: (:) [],ParentContainsErrorRecordException
猜你喜欢
Rllib学习[2] --env定义 + env rollout
URL地址映射配置
JWT(JSON Web Token)的基础使用
The gratitude and resentment between the four swordsmen and code review: "abandon all chaos" to "prodigal son returns"
Issues related to PPP dialing of 4G module in Shanghai domain grid
UnityVR--机械臂场景4-礼物和圣诞树
拯救不开心!我的机器人心理医生;机器学习的KPI千里追踪术;YOLO v7的PyTorch实现;李航新书『机器学习方法』开放试读 | ShowMeAI资讯日报
It's too voluminous. A company has completely opened its core system (smart system) that has been operating for many years
下次面试官再问高并发系统设计,直接把这篇文章甩给他
Nodejs学习
随机推荐
An article enables you to thoroughly understand the definitions of common terms about performance testing
Opencv image processing --------- environment installation configuration
Etcd database source code analysis -- etcdserver run apply process
SSM环境整合
three.js打造失真滑块
小程序页面生成链接通过短信发送
线性结构理解
21特征值和特征向量
一篇文章让你彻底搞懂关于性能测试常见术语的定义
Nodejs学习
Compiler remainder optimization
TCP与UDP的区别
sql分组后获取其中一个字段最大值或最小值的该行的整条记录
Static keyword
Opencv's image processing. This one is enough (I)
C#使用Objects Comparer进行对象比较
Spiderpi convenient operation manual
Research Report on research and development prospects of China's strontium carbonate industry (2022 Edition)
CnosDB 涅槃重生:弃用Go, 全面拥抱Rust
Etcd database source code analysis -- ServerV2 interface implementation