本次主要采用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数据库分表实现相关推荐

  1. mysql一张表1亿天数据_1亿条数据在PHP中实现Mysql数据库分表100张

    转: 1亿条数据在PHP中实现Mysql数据库分表100张 http://php-z.com/thread-2115-1-1.html (出处: PHP-Z) 当数据量猛增的时候,大家都会选择库表散列 ...

  2. MySQL数据库分表分区

    防伪码:当你终于沉默,成熟才刚刚开始. 为什么要分表和分区? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且 由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性 ...

  3. mysql数据库分表备份脚本_MySQL分库分表备份脚本

    MySQL分库分表备份脚本 vim /data/mysqlback.sh #! /bin/bash BAKPATH=/data/mysql-back MYUSER=root MYPASS=" ...

  4. mysql数据库分表备份脚本_MySQL分库分表备份数据库脚本的操作

    MySQL分库分表备份数据库脚本的操作 发布时间:2020-05-26 16:52:23 来源:51CTO 阅读:134 作者:三月 本篇文章给大家主要讲的是关于MySQL分库分表备份数据库脚本的操作 ...

  5. mysql 数据库分表查询_mysql数据库分表及实现

    项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. 当出现这种情况时,我们可以考虑分表,即将单 ...

  6. mysql 数据库分表三种方法

    当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. 根据个人经验,mysql执行一个sql的过程如下 ...

  7. mysql数据库分表及查询

    垂直分表: 其实没啥好讲,就是 主键+常用列 放在原表中,再讲 主键+一些不常用列 放在另外的表中. 这样一个数据页就可以存放更多数据. 但是缺点也明显,可能会增加join 或 union之类的操作. ...

  8. MySQL数据库分表与分区

    阅读目录 阐述 什么是 MySQL 分表 1.垂直分表 2.水平分表 3.分表操作 1)自定义规则 2)使用 Merge 存储引擎 4.分表查询 5.注意事项 1)重复记录 / 重复索引 2)如何删除 ...

  9. mysql数据库 分表存储分表查询

    因为看到公司数据库商家的商品是存储在多个商品表的分表中,这里是有 0 - 9 共10个分表,就突然有了疑惑,怎么存的?查寻的时候怎么查的?怎么定位到这个商家的商品在某一个分表中? 这里简单的来记录一下 ...

最新文章

  1. Android中ViewPager+Fragment的基本使用
  2. 进腾讯了!(实习面经分享)
  3. 海康摄像头 海思AI芯片(Hi35XX): 图像jpg转.bgr
  4. vue饼图组件_vue2.0 自定义 饼状图 (Echarts)组件
  5. luogu P1896 [SCOI2005]互不侵犯
  6. C#趣味程序---百鸡百钱
  7. 首尾相接数组求子数组最大和
  8. 学校机房为什么要穿鞋套?
  9. toolBar——工具栏
  10. 深入剖析WebRTC事件机制之Sigslot
  11. Android 7.1 App Shortcuts使用
  12. 批处理取系统前一天时间并取备分文件日期为前一天的复制到本地
  13. 极客大学产品经理训练营:需求评审 第13课总结
  14. python数据可视化之美 豆瓣_Python数据可视化:豆瓣电影TOP250
  15. 探寻Linux 中国之路
  16. 微信显示服务器吃撑了,虐死单身狗!微信突然上线新功能:狗粮一下吃到撑
  17. JavaWeb-狂神-P11
  18. Java加密技术(三)—— HMACSHA1 加密算法
  19. 前端实现3D旋转木马相册
  20. Android open failed: ENOENT (No such file or directory)以及open failed: EISDIR (Is a directory)

热门文章

  1. Lua 5.0 参考手册
  2. [数据结构]递归树:借助树求解递归算法的时间复杂度
  3. 【寒假学习】考研高数第二章-导数与微分
  4. vs用Python爬数据?(一)网页抓取
  5. Long类型数据比较
  6. Python全栈+人工智能学习路线
  7. 对话西门子Mendix:低代码与亚马逊云科技Serverless的底层融合,助力企业提效降本...
  8. hibernate一对多向数据库保存数据失败问题解决
  9. 用NCL将GRIB/GRIB2文件转成nc文件(批量转),JRA-55再分析为例
  10. 【Nmap的使用方法】