mysql的分区技术

3 篇文章 0 订阅

Mysql5种分区技术

1,        RANDE分区技术

Create table if not exist part_tab(c1 int default null , c2 varchar(30) default null , c3 date default null) engine= myisam
 partition by  range(year(c3))(
	partition p0 values less than (1995-01-01);
partition p2 values less than (1996-01-01);
…………
Partition p17 values less than MAXVALUE
) ;

2,  LIST分区技术

Create table if not exist part_tab(c1 int default null , c2 varchar(30) default null , c3 date default null) engine= myisam
Partition by list (c1)(
Partition p1 values in (1,2,3,4,5,6),
Partition p1 values in (7,8,9,10,11,12),
Partition p1 values in (23,24,25,26,27,29),
);

 3 , HASH分区技术

Create table if not exist part_tab(c1 int default null , c2 varchar(30) default null , c3 date default null) engine= myisam
 partition by  hash(year(c3)) 
partitions 4;

4,        KEY分区技术

与hash分区技术类似



测试RANDG分区技术:

      创建普通表:

      Createtable no_part_table(c1 int default null, c2 varchar(30) default null,c3 datedefault null) engine=myisam;

创建RANDG分区表:

Create table part_tab(c1 int default NULL,c2 varchar(30) default NULL,c3 date default NULL ) engine=myisam

Partition by range(year(c3))(

      Partitionp0 values less than (1995),

      Partitionp1 values less than (1996),

      Partitionp2 values less than (1997),

      Partitionp3 values less than (1998),

      Partitionp4 values less than (1999),

      Partitionp5 values less than (2000),

      Partitionp6 values less than (2001),

      Partitionp7 values less than (2002),

      Partitionp8 values less than (2003),

      Partitionp9 values less than (2004),

      Partitionp10 values less than (2005),

      Partitionp11 values less than (2006),

      Partitionp12 values less than (2007),

      Partitionp13 values less than (2008),

      Partitionp14 values less than (2009),

      Partitionp15 values less than (2010),

      Partitionp16 values less than (2011),

      Partitionp17 values less than MAXVALUE

);

通过mysql的存储来插入大量的数据:

Mysql> \d //

create procedure load_part_tab()

      begin

      declarev int default 0;

      whilev < 8000000

      do

           insertinto part_tab values (v,'testingpartition',adddate('1995-01-01',(rand(v)*36520) mod 3652));

           setv = v+1;

      endwhile;

      end

      //

Mysql> /d ;

执行mysql的存储插入数据:

Mysql>call load_part_tab;

在没有分区的表里插入数据

Mysql> insert into no_part_tab select *from part_tab;

分别测试有分区的表part_tab和没有分区的表no_part_tab 的执行效率:

同样的数据和同样的SQL语句:





        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值