mysql分區

★針對海量數據的優化主要有兩種方法

(1)大表拆成小表

     垂直分表(豎切)---主鍵在每個分表中都會出現

     水平分表(橫切)---字段一般穩定,而記錄不穩定

     水平分表技術是將一個表拆分成多個表,比較常用的方式是將表中的記錄按照某種Hash算法進行拆分,簡單的拆分方法如取模方式。同樣,這種分區方法也必須對前端的應用程序中的SQL進行修改方可使用。而且對於一個SQL,它可能會修改兩個表,那麼必須得寫成2個SQL語句從而可以完成一個邏輯事務,使得程序的邏輯判斷越來越複雜,這也會導致程序的維護代價增高,也就失去了採用數據庫的優勢。因此,分區技術可以有利地避免如上的弊端,成爲解決海量數據的有利方法

(2)SQL語句的優化

     可以通過增加索引等來調整,但是數據量的增大同時也會導致索引的維護代價增大

★mysql分區技術不同於之前的分表技術,它與水平分表有些類似,但是它是在邏輯層進行的水平分表,對於應用程序而言它還是一張表

  • RANGE分區:基於屬於一個給定的連續區間的列值,把多行分配給分區

    PARTITION BY RANGE(store_id)(

     PARTITION p0 VALUES LESS THAN(6),    編號1-5的店鋪存放在p0分區(< 6)

     PARTITION p1 VALUES LESS THAN(11),   編號6-10的店鋪存放在p1分區

     PARTITION p2 VALUES LESS THAN(16),   編號11-15的店鋪存放在p2分區

     PARTITION p3 VALUES LESS THAN(21),   編號16-20的店鋪存放在p3分區

    )

  • LIST分區:類似於按RANGE分區,區別在於LIST分區是基於列值匹配一個離散值集合中的某個值進行選擇

    PARTITION BY LIST(store_id)

    (

     PARTITION pNorth VALUES IN(3,5,6,9,17),

     PARTITION pEast VALUES IN(1,2,10,11,19,20),

     PARTITION pWest VALUES IN(4,12,13,14,18),

     PARTITION pCentral VALUES IN(7,8,15,16),

    )

  • HASH分區:基於用戶定義的表達式的返回值來進行選擇的分區,該表達式使用將要插入到表中的這些行的列值進行計算,這個函數可以包含mysql中有效的、產生非負整數值的任何表達式(平均分配到每個分區,但可能分區與分區之間的數據沒有規律)

    PARTITION BY HASH(YEAR(hired))

    PARTITIONS 4

    ;

  • KEY分區:類似於按HASH分區,區別在於KEY分區只支持計算一列或多列,並且mysql服務器提供其自身的HASH函數

★不同分區技術的對比

  分區類型                 優點                      缺點                      共性

    RANGE         適合日期類型支持複合分區        有限的分區             一般只針對某一列

    LIST       適合有固定取值的列支持複合分區   有限的分區,插入         一般只針對某一列

                                                記錄在這一列的值不在

                                                LIST中,則數據丟失   

    HASH       線性HASH使得增加、刪除和合並分   線性Hash的數據分佈不     一般只針對某一列

               區更快捷                         均勻而一般Hash數據分

                                                布較均勻 

    KEY        列可以爲字符型等其他非Int類型    效率較之前的低,因爲     一般只針對某一列

                                                函數爲複雜的函數

                                               (如.MD5或SHA函數) 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章