想測試下表分割槽功能跟自主的分布式的效能差異,進行了簡單的測試,前後花費了半個小時,可能測試資料不太準確。
【測試環境】
作業系統:windows xp sp2
mysql: 5.1.19-beta-community-nt-debug
【測試過程】
檢視mysql版本:
mysql>selectversion()
;+--------------------------------+
|version()|
+--------------------------------+
|5.1.19
-beta-community-nt-debug|
+--------------------------------+
1rowinset(
0.00
sec)
建立分割槽表:
mysql>createtablep1(
->idint(
10)notnullauto_increment
,->usernamevarchar(
32)default''
,->emailvarchar(
64)default''
,->createddatetimedefault'
0000-00
-0000:
00:00'
,->primarykey(id)
->)engine
=myisam
->partitionbyrange(id)(
->partitionp1valueslessthan(
10000),
->partitionp2valueslessthan(
20000),
->partitionp3valueslessthan(
30000),
->partitionp4valueslessthan(
40000),
->partitionp5valueslessthan(
50000),
->partitionp6valueslessthan(
60000),
->partitionp7valueslessthan(
70000),
->partitionp8valueslessthan(
80000),
->partitionp9valueslessthan(
90000),
->partitionp10valueslessthanmaxvalue
->)
;queryok,0
rowsaffected(
0.08
sec)
建立不分割槽(普通表):
mysql>createtablep2(
->idint(
10)notnullauto_increment
,->usernamevarchar(
32)default''
,->emailvarchar(
64)default''
,->createddatetimedefault'
0000-00
-0000:
00:00'
,->primarykey(id)
->)engine
=myisam
;queryok,0
rowsaffected(
0.00
sec)
插入資料的儲存過程:
mysql>delimiter//
mysql>createprocedureload_tab()
->begin
->declarevintdefault0;
->whilev<
100000
->do
->insertintop1(username
,created)values('jack'
,now())
;->setv=v+
1;->endwhile
;->end
->//
queryok,0
rowsaffected(
0.00
sec)
給兩個表分別插入資料:
mysql>delimiter
;mysql>callload_tab()
;queryok,1
rowaffected(
11.09
sec)
mysql>insertintop2select*fromp1
;queryok
,100001
rowsaffected(
1.30
sec)
records:
100001
duplicates:
0warnings:0
查詢結果比較:
mysql>selectcount(
1)fromp1
;+----------+
|count(1)|
+----------+
|100001
|+----------+
1rowinset(
0.00
sec)
mysql>selectcount(
1)fromp2
;+----------+
|count(1)|
+----------+
|100001
|+----------+
1rowinset(
0.00
sec)
mysql>select*fromp1
;100001
rowsinset(
0.41
sec)
mysql>select*fromp2
;100001
rowsinset(
0.42
sec)
【總結】
看來這個簡單資料和在windows平台上面,資料量太小,還無法看出採用分割槽表的優勢,但是表分割槽比普通表還是要快 一點點,大資料量沒有測試,因為沒有安裝了mysql 5.1 的伺服器,所以就簡單的測試下,當然,還應該選擇不同的分割槽方式,比如hash,混合之類的,這裡只是簡單的範圍分割槽。
這個測試結果不太靠譜,姑且看看,建議需要使用的還是自己測試看看才是正道。 ^_^
參考資料:
MySql 5 1儲存過程
下面是mysql5.1儲存過程和函式的基本語法 1 儲存過程 create definer procedure sp name proc parameter characteristic routine body 2 函式 create definer function sp name func p...
MySQL 5 1 約束簡化
建立表的時候指定約束 primary key主鍵 notnull 非空default 123 預設 unique 唯一constraint fk cid foreign key lie2 references bookcategory category id 外來鍵 ondelete cascade...
MySQL 5 1 原始碼安裝
yum y install libaio ncurses tar zxf mysql 5.1.62.tar.gz cd mysql 5.1.62 a useradd g mysql mysqlgame b configure prefix usr local mysqlgame with chars...