資料量一多時,為了要達到良好的 performance 與 availability,就要把資料進行Partitions

Partitions 大致上可分為

Horizontal partitioning(水平分區)又稱為 shard

將不同的資料行存放在成數個不同的表,ex:資料以年的方式存放,每一年為一個表格。

Vertical partitioning (垂直分區)

將不同的欄位存放在不同的表中,ex.某幾個欄位不經常被訪問而且格式又大的時候,往往會透過這種方式來做分區,不但能保證它們數據相關性的同時還能提高訪問速度。

Mysql 5.1 以前,要做水平分區,必須仰賴工程師,人工劃分並且將資料分別寫到不同的資料表中。

Ex: 以ID 進行MD5 取特定幾碼作為分區碼

send_mail_log_00….send_mail_log_ff

Mysql 5.1 增加了水平分區的功能,也就是在創建好資料表後,決定分區的方式,由Mysql控制資料流

Mysql 5.1提供了以下幾種方式分區

Range (範圍):比方說 ID 0~5000第一區 5000~10000第二區…..以此類推

Hash (雜湊) :決定好一個鍵值,Mysql會依照鍵值做Hash,然後分類

Key (鍵值):Hash的延伸,由Mysql自行產生Hash Key

List (列表) :根據定義的列表的值所對應的行數據進行分割

Composite(複合):可以依據需求使用不同的分區類別(包含兩個或以上的分區類型)

ps.分區限制最大為1024

有興趣可以參考下面的文章

http://article.denniswave.com/6320

通過分區(Partition)提升MySQL性能(二)

官方說明文件:http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

Leave a Comment