mysql的分割槽與分表

程式設計_靈魂發表於2017-05-03

最近在做問題件專案4.2的需求。在連線查詢資料的時候,發現資料不全。後面問了同事,才知道公司的資料是採用分表的形式儲存的,所以不指定分表的欄位的值,查詢不出來全部資料。

mysql 分割槽

當我們的資料量很大的時候,使用分割槽可以提高查詢的速度。它的原理是將資料儲存分成多個檔案儲存。詳情可檢視mysql分割槽。注意mysql5.1以上才支援分割槽語法。

mysql的分表

當資料量達到上億條時,我們不得不選擇將資料以分表的形式儲存。分表常用的第三方工具有myCat。我相信做過分表的對myCat很熟。不熟悉的夥伴可以參考mycat分表。我在這裡說下我們公司的分表規則。做的是一個物流系統,然後系統是以網點、地區、總部3個層級來劃分的。有8個mysql例項,所以可以按照地區程式碼area_code PartitionByMurmurHash 分片規則來分別存放到8個例項中,查詢的時候也需要指明area_code的值,否則資料會查不全。

總結: mysql的分表分庫是提高資料庫查詢的一種方式,但是會增加不同庫之間連線查詢的麻煩。所以資料量不大(上億)的時候,還是不需要分庫的。當然mycat還有其他作用,比如讀寫分離,垂直分表等。還可以從使用分散式快取、記憶體快取、mysql叢集、索引等方面去提高訪問資料的辦法。

相關文章