美文网首页
Mysql表分区

Mysql表分区

作者: 杍劼 | 来源:发表于2016-08-12 16:46 被阅读44次

    一、表分区:

    当一张表的数据非常多的时候,比如单个.myd文件都达到10G, 这时,必然读取起来效率降低,可不可以把表的数据分开在几张表上?

    1.从业务角度可以解决(分表):

    比如, 通过id%10 , user0 , user1....user9, 这10张表,根据不同的余数,来插入或查询某张表;

    2.通过mysql的分区功能:

    mysql将会根据指定的规则,把数据放在不同的表文件上,相当于在文件上被拆成了小块,但是给客户的界面还是1张表

    二、分区规则:

    1.根据某列的范围来分区:

    create table topic (

        tid int primary key auto_increment,

        title char(20) not null default ''

    ) engine myisam charset utf8

        partition by range(tid) (

        partition t1 values less than (10),

        partition t2 values less than (20),

        partition t3 values less than MAXVALUE

    );

    查看topic表文件组成:cd/var/lib/mysql/test

    注:普通表一般由三个文件组成:.frm文件存放表结构,.MYD文件存放表数据,.MYI文件存放表索引,分区表则在每个分区都有.MYD和.MYI文件单独存放着表数据和表索引

    2.根据某列的散点值来分区:

    create table area (

        aid int,

        zone char(6)

    ) engine myisam charset utf8;

    create table member(

        uid int,

        uname char(6),

        aid int

    ) engine myisam charset utf8

        partition by list(aid) (

        partitionbj values in (1),

        partitionhb values in (2),

        partitionsx values in (3),

        partitionah values in (4)

    );

    insert into member (uname,aid) values('poly',1);    //此时poly属于bj分区

    insert into member (uname,aid) values('lily',2);      //此时lily属于hb分区

    相关文章

      网友评论

          本文标题:Mysql表分区

          本文链接:https://www.haomeiwen.com/subject/nekesttx.html