MySQL分區(Partition)與分片(Sharding)的差別

    有的時候,Sharding 也被近似等同於水平分區(Horizontal Partitioning),網上不少地方也用水平分區來指代 Sharding,但我我的認爲兩者之間實際上仍是有區別的。的確,Sharding 的思想是從分區的思想而來,但數據庫分區基本上是數據對象級別的處理,好比表和索引的分區,每一個子數據集上可以有不一樣的物理存儲屬性,仍是單個數據庫範圍內的操做,而 Sharding 是可以跨數據庫,甚至跨越物理機器的數據庫

     MySQL5.1提供的分區(Partition)功能確實能夠實現表的分區,可是這種分區是侷限在單個數據庫範圍裏的,它不能跨越服務器的限制。若是可以保證數據量很難超過現有數據庫服務器的物理承載量,那麼只需利用MySQL5.1提供的分區(Partition)功能來改善數據庫性能便可;不然,仍是考慮應用Sharding理念吧,spider storage engine就是一個不錯的選擇。服務器

    sharding分爲垂直分區和水平分區。垂直就是把不一樣的表分散到不一樣的數據庫或主機。適合耦合度低系統。水平分區以行爲單位,將同一個表的數據拆分到不一樣數據庫或主機上,適合複雜系統。ide

    此外,sharding還能夠分爲靜態和動態。靜態即分區鍵是靜態分配的。可能數據不均衡。動態則引入一個字典,而後定位在哪一個分片。每次查詢要2步,且可能存在單點故障。性能

相關文章
相關標籤/搜索