小貝_mysql分區理論學習,小貝_mysql理論學習

來源:互聯網
上載者:User

小貝_mysql分區理論學習,小貝_mysql理論學習
mysql分區簡要:一、為什麼需要mysql分區二、mysql分區的類型三、mysql分區技術對比

 

一、為什麼需要mysql分區

1、首先,業務資料增大時,必然會影響資料操作。通常針對大資料,有如下最佳化方法:

              a、大表拆小表

              b、sql語句最佳化

2、不足:

a、sql語句最佳化可以通過增加索引等來調整,但是隨著資料量增大時將會導致索引的維護代價增大

b、大表拆分小表可以在細分為垂直or水平分表。但是需要實現邏輯操作。即選擇那張表

3、總結: 針對大資料,添加索引會導致索引檔案大以及維護索引代價大,拆分表,就需要實現邏輯操作。因此,這裡需要用到mysql分區。分區其實從本質上也是實現了拆分小表的做法。是基於物理層面上進行拆分成小表,無須實現邏輯操作,對使用者而言是透明的。

 

二、mysql分區類型

1、range分區: 基於給定連續區間的列值,把多行分配給分區

2、list分區: 類似於按range分區,區別在於list分區是基於列值匹配一個離散值集合中的某個值來進行選擇

3、hash分區: 基於使用者定義的運算式的返回值來進行選擇的分區,該運算式使用將要插入到表中的這些行的列值進行計算,這個函數可以包含mysql中有效、產生非負整數值得任何錶達式

4、key分區: 類似於hash分區,區別在於key分區只支援計算一列或多列,且mysql伺服器提供自身的雜湊函數

總結: 使用優先順序 range>list>hash>key

        hash一般用於測試分區

 

三、mysql分區技術對比

分區名稱

優點

缺點

共性

range

適合與日期類型,支援複合分區

有限的分區

一般只針對某一列

list

適合與有固定取值的列,支援複合分區

有限的分區,插入記錄在這一列的值不在list中,則資料丟失

一般只針對某一列

hash

線性hash使得增加、刪除和合并分區更快捷

線性hash的資料分布不均勻,而一般hash的資料分布均勻

一般只針對某一列

key

列可以為字串等其它非int類型

效率較之前的低,因為函數為複雜的函數如md5或sha函數

一般只針對某一列

 

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.