[原创] 简单测试MySQL 5.1 表分区功能


想测试下表分区功能跟自主的分布式的性能差异,进行了简单的测试,前后花费了半个小时,可能测试数据不太准确。

【测试环境】

操作系统:Windows XP SP2
MySQL: 5.1.19-beta-community-nt-debug

【测试过程】

查看MySQL版本:

mysql> select version() ;
+--------------------------------+
| version()                      |
+--------------------------------+
5.1.19 -beta-community-nt-debug |
+--------------------------------+
1  row in set ( 0.00  sec)

 

建立分区表:

mysql> create table p1 (
    -> id int(
10 ) not null auto_increment ,
    -> username varchar(
32 ) default '' ,
    -> email varchar(
64 ) default '' ,
    -> created datetime default '
0000 - 00 - 00   00 : 00 : 00 ' ,
    -> primary key (id)
    -> ) engine
= myisam
    -> partition by range(id)(
    -> partition p1 values less than (
10000 ) ,
    -> partition p2 values less than (
20000 ) ,
    -> partition p3 values less than (
30000 ) ,
    -> partition p4 values less than (
40000 ) ,
    -> partition p5 values less than (
50000 ) ,
    -> partition p6 values less than (
60000 ) ,
    -> partition p7 values less than (
70000 ) ,
    -> partition p8 values less than (
80000 ) ,
    -> partition p9 values less than (
90000 ) ,
    -> partition p10 values less than maxvalue
    -> )
;
Query OK ,   0  rows affected ( 0.08  sec)

 

建立不分区(普通表):

mysql> create table p2 (
    -> id int(
10 ) not null auto_increment ,
    -> username varchar(
32 ) default '' ,
    -> email varchar(
64 ) default '' ,
    -> created datetime default '
0000 - 00 - 00   00 : 00 : 00 ' ,
    -> primary key (id)
    -> ) engine
= myisam ;
Query OK ,   0  rows affected ( 0.00  sec)

 

插入数据的存储过程:

mysql> delimiter //
mysql> create procedure load_tab()
    -> begin
    ->  declare v int default 
0 ;
    ->  while v <  100000
    ->          do
    ->          insert into p1 (username
, email , created) values ('jack' ,  'jack@example.com' ,  now()) ;
    ->          set v  =  v +  1 ;
    ->  end while ;
    -> end
    -> //
Query OK
,   0  rows affected ( 0.00  sec)

 

给两个表分别插入数据:


mysql> delimiter 
;
mysql> call load_tab() ;
Query OK ,   1  row affected ( 11.09  sec)


mysql> insert into p2 select * from p1
;
Query OK ,   100001  rows affected ( 1.30  sec)
Records: 
100001   Duplicates:  0   Warnings:  0

 

查询结果比较:

mysql> select count( 1 ) from p1 ;
+----------+
| count(
1 ) |
+----------+
|   
100001  |
+----------+
1  row in set ( 0.00  sec)

mysql> select count(
1 ) from p2 ;
+----------+
| count(
1 ) |
+----------+
|   
100001  |
+----------+
1  row in set ( 0.00  sec)



mysql> select * from p1
;
100001  rows in set ( 0.41  sec)

mysql> select * from p2
;
100001  rows in set ( 0.42  sec)

 

【总结】

看来这个简单数据和在Windows平台上面,数据量太小,还无法看出采用分区表的优势,但是表分区比普通表还是要快 一点点,大数据量没有测试,因为没有安装了MySQL 5.1 的服务器,所以就简单的测试下,当然,还应该选择不同的分区方式,比如hash,混合之类的,这里只是简单的范围分区。

这个测试结果不太靠谱,姑且看看,建议需要使用的还是自己测试看看才是正道。 ^_^

 

参考资料:http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html

 

 


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值