大数据-分表分区分库
问题集:
1、分表时两张表的数据都一样么?如果一样,只是降低了表的访问量,但是如果数据多了还是没有提高查询的效率
答:分表是对一张表中的数据按照某种规则进行拆分到三张表中,三张表的所有数据才是完整的数据
2、如果是分库,分表联合使用,那么一个库进行读,一个库进行写,那么数据时怎么保持一致呢
为什么要进行数据库数据表的分离:
一个数据库,一张表,随着时间的推移,客户量的增多,一张表的数据量就很容易的提高一个甚至更多的量级,
那么我们进行修改和查询就很费时,所以需要对数据进行切分操作。
分区 :就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的

分表 :就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它。

分库:就是分成多个数据库实例,每个数据库实例中表名相同
什么时候进行分区、分表:
1、当数据特别大但是访问的人不多时可以只进行分区
 2、当数据特别大访问的人多时进行分表和分区结合
什么时候进行分库:
当一个数据库不足以存储所有的数据时
分库的规则:1.垂直拆分:根据不同的业务种类在不同的数据库存储不同的数据信息(最好是0耦合)
垂直分库-->水平分库-->读写分离
对于分表的处理:
通过创建分表和总表(汇总了所有分表的数据),添加数据时以总表为模板创建数据,以某种计算规则得出添加到什么分表中,这样就不会出现总表中主键冲突的问题
查询时也是同样,以某种规则得到查询的时什么分表中的数据
分区执行代码分析:

CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',
`sex` int(1) NOT NULL DEFAULT '' COMMENT '0为男,1为女',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (3),
PARTITION p1 VALUES LESS THAN (6),
PARTITION p2 VALUES LESS THAN (9),
PARTITION p3 VALUES LESS THAN (12),
PARTITION p4 VALUES LESS THAN MAXVALUE
);

创建一个用户,并通过id进行分区处理

alter table user drop partition p2;

删除分区信息,同时也会删除该分区中的数据

alter table user partition by RANGE(id)
(PARTITION p1 VALUES less than (5),
PARTITION p2 VALUES less than (10),
PARTITION p3 VALUES less than MAXVALUE);

重排分区信息

alter table user1 add partition(partition p4 values less than MAXVALUE);

添加分区信息

alter table user1 add partition(partition p4 values less than (17));

添加分区信息,使用前提,没有配置MAXVALUE
分表代码执行分析

CREATE TABLE IF NOT EXISTS `user1` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',
`sex` int(1) NOT NULL DEFAULT '' COMMENT '0为男,1为女',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 CREATE TABLE IF NOT EXISTS `user2` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',
`sex` int(1) NOT NULL DEFAULT '' COMMENT '0为男,1为女',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1

创建两张表信息

create table  user_total like user1;

创建总表汇总来源于user1表

ALTER TABLE user_total ENGINE=MRG_MYISAM UNION=(user1,user2) INSERT_METHOD=LAST;

更改总表的数据来源,来源于表user1和表user2

注意:在使用时,需要先分表再分区,先分区再分表会出现引擎无法再分区表中使用,无法创建分表

Mysql-分库分区分表的更多相关文章

  1. mysql分库分区分表

    分表: 分表分为水平分表和垂直分表. 水平分表原理: 分表策略通常是用户ID取模,如果不是整数,可以首先将其进行hash获取到整. 水平分表遇到的问题: 1. 跨表直接连接查询无法进行 2. 我们需要 ...

  2. 一文搞懂│mysql 中的备份恢复、分区分表、主从复制、读写分离

    目录 mysql 的备份和恢复 mysql 的分区分表 mysql 的主从复制读写分离 mysql 的备份和恢复 创建备份管理员 创建备份管理员,并授予管理员相应的权限 备份所需权限:select,r ...

  3. 【分库、分表】MySQL分库分表方案

    一.Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. ...

  4. Java互联网架构-Mysql分库分表订单生成系统实战分析

    概述 分库分表的必要性 首先我们来了解一下为什么要做分库分表.在我们的业务(web应用)中,关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量.连接数.处理能力等都很有限,数据库本身的“有状态性” ...

  5. mysql分库分表(一)

    mysql分库分表 参考: https://blog.csdn.net/xlgen157387/article/details/53976153 https://blog.csdn.net/cleve ...

  6. 思考--mysql 分库分表的思考

    查询不在分库键上怎么办,扫描所有库?由于分库了,每个库扫描很快?所以比单个表的扫描肯定快,可以这样理解吗. 多表jion怎么弄,把内层表发给每个分库吗? citus,tidb 都有这些问题,citus ...

  7. mysql 数据库 分表后 怎么进行分页查询?Mysql分库分表方案?

    Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. m ...

  8. Mysql分库分表方案

    Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. m ...

  9. MYSQL分库分表和不停机更改表结构

    在MYSQL分库分表中我们一般是基于数据量比较大的时间对mysql数据库一种优化的做法,下面我简单的介绍一下mysql分表与分库的简单做法. .分库分表 很明显,一个主表(也就是很重要的表,例如用户表 ...

  10. MySQL分库分表备份脚本

    MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...

随机推荐

  1. 曹工说Spring Boot源码(15)-- Spring从xml文件里到底得到了什么(context:load-time-weaver 完整解析)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  2. tmobst5an

    1.(单选题)SQL语言又称为() A)结构化定义语言 B)结构化控制语言 C)结构化查询语言 D)结构化操纵语言 解析:SQL语言又称为结构化查询语言 2.(单选题)只有满足联接条件的记录才包含在查 ...

  3. [terminal]关于进度条的学习

    在PowerShell中隐藏光标 在pip的源码C:\Python36\Lib\site-packages\pip\utils\ui.py中发现了: @contextlib.contextmanage ...

  4. Comb结合android开发

    https://blog.csdn.net/qq_29665509/article/details/79272441 参考comb官方文档 https://blog.csdn.net/qq_29665 ...

  5. go接口详解

    go面向接口编程知识点 接口定义与格式 隐式实现及实现条件 接口赋值 空接口 接口嵌套 类型断言 多态 接口定义与格式 接口(interface)是一种类型,用来定义行为(方法).这句话有两个重点,类 ...

  6. 使用MS Devops 来部署CRM Solution

    在D365 CE开发当中,有一个非常痛苦的问题就是开发,测试环境中的export import solution 部署问题. Devops中能很好的解决这个问题. 工作原理: 在Azure Devop ...

  7. EMC NW NMM to backup MS AG

    To use EMC NW NMM to backup MS SQL always on database, that is a simple and safe way to protector da ...

  8. [C/C++]const限定符总结

    const限定符 const是一种限定符,被const所限定的变量其值不可以被改变. const的初始化 由于const一旦创建其值就不能够被改变,所以我们必须对其进行初始化 const int a; ...

  9. 基于 H5和 3D WebVR 的可视化虚拟现实培训系统

    前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...

  10. 【OpenGL】LNK1104 无法打开文件“freeglutd.lib”

    新建的OpenGL程序编译时经常会出现[LNK1104 无法打开文件“freeglutd.lib”]问题,如果freeglutd.lib确实放到了正确的路径下,通常可以通过添加“NDEBUG”宏定义解 ...