zoukankan      html  css  js  c++  java
  • mysql分区技术

    基本概念

    把一个表,从逻辑上分成多个区域,便于存储数据。

    采用分区的前提,数据量非常大。

    如果数据表的记录非常多,比如达到上亿条,数据表的活性就大大降低,数据表的运行速度就比较慢、效率低下,影响mysql数据库的整体性能,就可以采用分区解决

    分区是mysql本身就支持的技术

    分区算法

    list分区

    list :条件值为一个数据区。

    算法根据“字段的内容值”是否在某个“区域”中进行分区,通过预定义的列表的值来对数据进行分割。

    语法

    利用表选项:partition 完成。

    create table  table_name(

           字段信息,

           索引,

    ) charset utf8

    partition by list(分区字段)(

        partition list_name1 values in (),

        partition list_name2 values in()

    );

    例子:创建一张表,该表保存有全国20家分公司的职员记录,这20家分公司的编号从1到20.而这20家分公司分布在全国4个区域,如下表所示:

    id  name   store_id(分公司的id)

    北部    1,4,5,6,17,18

    南部    2,7,9,10,11,13

    东部    3,12,19,20

    西部    8,14,15,16

    查看执行计划

     

    注意:where后面的字段必须是分区字段

    range分区

    定义:利用“字段值”取值范围将数据分区,区间要连续并且不可以重叠,使用VALUES LESS THAN 进行分区定义

    less than   小于等于

    MAXVALUE  可能的最大值 

    例子:用户余额表

    create table p_range(
    id int(11) NOT NULL,
    name varchar(32) NOT NULL,
    totle_money int(11) NOT NULL
    )
    partition by range (totle_money)(
              partition p1 values less than (100),
              partition p2 values less than(1000),
              partition p3 values less than(10000),
              partition p4 values less than MAXVALUE
    );

    注意

    1,上面分区语句的VALUES LESS THAN MAXVALUE子句是表示当有大于10000的时候都插入到p4中,MAXVALUE代表最大可能整数值,否则当我们插入一条记录包含10001时会报错。

    2,顺序是有规定的,当把p1设为1000而p2设为100时会报错。

    3,无论是哪一种分区类型,如果表里有主键,则分区字段必须是主键或者主键的一部分,否则会报错。

     A PRIMARY KEY must include all columns in the table's partitioning function

     如果添加主键   alter table p_range add PRIMARY key(id,totle_money)

    文件存储信息

     

    增加分区

    range/list 增加分区

    alter table table_name add  partition(

               partition 分区名 values less than (常量)

               

               partition 分区名 in (n,n,n)

     );

    删除分区

    给 range/list 删除分区

    alter table table_name drop partition 分区名称;

    注意:删除的分区里的数据会被删除。

  • 相关阅读:
    WPF 使用 Direct2D1 画图 绘制基本图形
    WPF 使用 Direct2D1 画图 绘制基本图形
    dot net core 使用 IPC 进程通信
    dot net core 使用 IPC 进程通信
    win2d 图片水印
    win2d 图片水印
    Java实现 LeetCode 240 搜索二维矩阵 II(二)
    PHP closedir() 函数
    PHP chroot() 函数
    PHP chdir() 函数
  • 原文地址:https://www.cnblogs.com/jdbeyond/p/11372681.html
Copyright © 2011-2022 走看看