Mysql数据库分表实现
本次主要采用MERGE分表法、对表进行水平拆分;
第一步:创建数据库
DROP TABLE IF EXISTS students
;
CREATE TABLE students
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
name
varchar(20) DEFAULT NULL,
num
varchar(20) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
第二步:添加数据
insert into students(name,num) values(‘steven’,‘0001’);
第三步:执行数据,蠕虫插入法
重复几次增加数据就到百万级
insert into students(name,num) select name,num from students
第四步:建立子表
根据自己的业务需求创建表的数量,举例:
DROP TABLE IF EXISTS students_01
;
CREATE TABLE students_01
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
name
varchar(20) DEFAULT NULL,
num
varchar(20) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS students_02
;
CREATE TABLE students_02
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
name
varchar(20) DEFAULT NULL,
num
varchar(20) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
第五步:创建虚拟主表
作为students_01、students_02表的关系表,数据存储在students_01、students_02上
DROP table IF EXISTS tb_students;
create table tb_students(
idbigint(20) NOT NULL AUTO_INCREMENT,
namevarchar(20) DEFAULT NULL,
numvarchar(20) DEFAULT NULL, PRIMARY KEY (
id`)
)ENGINE=MERGE UNION=(students_01,students_02) INSERT_METHOD=LAST CHARSET=utf8 AUTO_INCREMENT=1;
注:可能出现问题:
1、检查字段是否相同
2、检查子表类型是否为ENGINE=MyISAM
第六步:把主表的数据分拆到子表中
insert into students_01(name,num) select name,num from students where id%2=0;
insert into students_02(name,num) select name,num from students where id%2<>0;
最后完成以上步骤之后,分表完成;
增加数据:insert into tb_students(name,num) values(‘steven’,‘0001’);
查询数据:select * from tb_students
分表之后可以根据当前业务找到指定分区进行查询,可以快速定位找到数据,防止数据过多导致查询变慢、提高查询效率。
参考地址:
https://www.cnblogs.com/lucky-man/p/6207873.html
以上是实践所得,不足之处还请留言指出,相互学习,共同进步~
Mysql数据库分表实现相关推荐
- mysql一张表1亿天数据_1亿条数据在PHP中实现Mysql数据库分表100张
转: 1亿条数据在PHP中实现Mysql数据库分表100张 http://php-z.com/thread-2115-1-1.html (出处: PHP-Z) 当数据量猛增的时候,大家都会选择库表散列 ...
- MySQL数据库分表分区
防伪码:当你终于沉默,成熟才刚刚开始. 为什么要分表和分区? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且 由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性 ...
- mysql数据库分表备份脚本_MySQL分库分表备份脚本
MySQL分库分表备份脚本 vim /data/mysqlback.sh #! /bin/bash BAKPATH=/data/mysql-back MYUSER=root MYPASS=" ...
- mysql数据库分表备份脚本_MySQL分库分表备份数据库脚本的操作
MySQL分库分表备份数据库脚本的操作 发布时间:2020-05-26 16:52:23 来源:51CTO 阅读:134 作者:三月 本篇文章给大家主要讲的是关于MySQL分库分表备份数据库脚本的操作 ...
- mysql 数据库分表查询_mysql数据库分表及实现
项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. 当出现这种情况时,我们可以考虑分表,即将单 ...
- mysql 数据库分表三种方法
当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. 根据个人经验,mysql执行一个sql的过程如下 ...
- mysql数据库分表及查询
垂直分表: 其实没啥好讲,就是 主键+常用列 放在原表中,再讲 主键+一些不常用列 放在另外的表中. 这样一个数据页就可以存放更多数据. 但是缺点也明显,可能会增加join 或 union之类的操作. ...
- MySQL数据库分表与分区
阅读目录 阐述 什么是 MySQL 分表 1.垂直分表 2.水平分表 3.分表操作 1)自定义规则 2)使用 Merge 存储引擎 4.分表查询 5.注意事项 1)重复记录 / 重复索引 2)如何删除 ...
- mysql数据库 分表存储分表查询
因为看到公司数据库商家的商品是存储在多个商品表的分表中,这里是有 0 - 9 共10个分表,就突然有了疑惑,怎么存的?查寻的时候怎么查的?怎么定位到这个商家的商品在某一个分表中? 这里简单的来记录一下 ...
最新文章
- Android中ViewPager+Fragment的基本使用
- 进腾讯了!(实习面经分享)
- 海康摄像头 海思AI芯片(Hi35XX): 图像jpg转.bgr
- vue饼图组件_vue2.0 自定义 饼状图 (Echarts)组件
- luogu P1896 [SCOI2005]互不侵犯
- C#趣味程序---百鸡百钱
- 首尾相接数组求子数组最大和
- 学校机房为什么要穿鞋套?
- toolBar——工具栏
- 深入剖析WebRTC事件机制之Sigslot
- Android 7.1 App Shortcuts使用
- 批处理取系统前一天时间并取备分文件日期为前一天的复制到本地
- 极客大学产品经理训练营:需求评审 第13课总结
- python数据可视化之美 豆瓣_Python数据可视化:豆瓣电影TOP250
- 探寻Linux 中国之路
- 微信显示服务器吃撑了,虐死单身狗!微信突然上线新功能:狗粮一下吃到撑
- JavaWeb-狂神-P11
- Java加密技术(三)—— HMACSHA1 加密算法
- 前端实现3D旋转木马相册
- Android open failed: ENOENT (No such file or directory)以及open failed: EISDIR (Is a directory)