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

    mysql分区
    前提条件
    mysql版本 5.1以上
    查看是否装载分区插件
    show plugins;
    +------------+--------+----------------+---------+---------+
    | Name       | Status | Type           | Library | License |
    +------------+--------+----------------+---------+---------+
    | binlog     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    | partition  | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    | CSV        | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    | MEMORY     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    | InnoDB     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    | MyISAM     | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL    | GPL     |
    +------------+--------+----------------+---------+---------+
    有partition就行


    按照区域分区range**************
    这种分区时,分区字段要是递增的一种顺序排列,这个字段可以间隔,但不能重复,否则按分区查询的时候只会显示一条,类似groupby


    创建分区表
    create table demo(id int,name char(20))
    partition by range(id)(
        partition p0 values less than(1000),
        partition p1 values less than(2000),
        partition p2 values less than maxvalue
    );

    d $

    创建存储过程
    create procedure insert_data()
    begin
        declare i int default 5000;
        while i>0 do
        insert into demo(id,name) values (i,left(md5(i),5));
        set i=i-1;
        end while;
    end
    $

    create procedure insert_da()
    begin
        declare i int default 5000;
        while i>0 do
        insert into testhash(id,name) values (i,left(md5(i),5));
        set i=i-5;
        end while;
    end
    $

    call insert_data()$


    查询数据看走什么分区
    explain partitions select * from demo where id=100G
    清空表
    truncate demo;

    create table demo(id int,name char(20))
    partitions by range(id)(
        partition p1 values less than(100),
        partition p2 values less than(200),
        partition p3 values less than maxvalue
        );


    list分组

    这个就是通用于归类的情况了 分类cid之类的
    create table test_list(id int,name char(20))
    partition by list(id)(
    partition p1 values in(1,3,5,7,9),
    partition p2 values in(2,4,6,8,0)
    );
    循环插入数据
    create procedure insert_list()
    begin
    declare i int default 100;
    declare y int default 1;
    while i>0 do
        set y = floor(rand()*10);
        insert into test_list(id,name) values(y,left(md5(i),5));
        set i=i-1;
    end while;
    end
    $




    hash分组

    用户自定义分组, 如果分3组的话 第一个添加到第一组 第二个到第二组 第三个到第三组 第四个到第一组...以此类推
    create table testhash(id int,name char(20))
    partition by hash (id)
    partitions 10;

    还有个KEY 分组 和hash分组很类似

    create table test(id int,name varchar(100),addtime date)engine myisam charset utf8
    partition BY KEY (addtime)
    PARTITIONS 10;

  • 相关阅读:
    halcon算子翻译——dev_set_paint
    Halcon算子翻译——dev_set_lut
    JDK、JRE、JVM各自是什么、以及什么关系
    dict 增删改查
    str 操作方法
    python基础_格式化输出(%用法和format用法)
    python spilt()函数的使用方法
    iterable- 什么是可迭代对象
    list 增 删 改 查 及 公共方法
    python 基本数据类型
  • 原文地址:https://www.cnblogs.com/gaofeifiy/p/5074553.html
Copyright © 2011-2022 走看看