本次主要采用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. Query理解在美团搜索中的应用
  2. sql server 2012序列号
  3. Flutter 基础布局Widgets之Baseline、AspectRatio详解
  4. 【CSS3初探之变形与动画】令人惊叹的CSS3
  5. 备考信息系统项目管理师-----Day1
  6. keras从入门到放弃(六)多层感知器(神经网络)
  7. (转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示...
  8. Spark的ShuffleManager
  9. Innosetup打包自动下载.net framework 动态库及替换卸载程序图标.
  10. dev-cpp linux,QT4+Devcpp开发环境搭建(参照网上资料整理)
  11. ISO27001认证步骤及证书年审
  12. mysql 5.7 master、salve 切换
  13. plotnine数据可视化手册
  14. 微信小程序--计算器demo实现
  15. ETC通行费9折活动
  16. 蓝桥杯 Cowboys
  17. 466A. Cheap Travel
  18. Linux性能优化(十六)——中断绑定
  19. python读取网络摄像头的帧_python实现从本地摄像头和网络摄像头截取图片功能
  20. mac mini 键盘调节显示器亮度

热门文章

  1. 客户贷后还款提醒优化项目
  2. Android应用接入微信开放平台
  3. 物流是如何用计算机管理的,计算机信息管理在物流业的应用
  4. 机器学习-Precision(查准率)、Recall(查全率)、P-R曲线
  5. hsgcc:面试笔记
  6. 用c语言写鸡兔同笼问题
  7. 网上书店(基于JavaWeb和Mysql)项目
  8. 厦门大学c语言第七八章作业答案,数据结构第七章考试题库(含答案).doc
  9. oracle ogg下载安装,【OGG】OGG的下载和安装篇
  10. 图像的MAP-MRF模型