原創 簡單測試MySQL 5 1 表分割槽功能

2021-08-22 16:04:45 字數 3243 閱讀 8972

想測試下表分割槽功能跟自主的分布式的效能差異,進行了簡單的測試,前後花費了半個小時,可能測試資料不太準確。

【測試環境】

作業系統: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

,email

,created)values('jack'

,'[email protected]'

,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...