數據庫分區是什麼?

王謙1989

關於數據庫分區,分表,分庫,我通俗易懂的來舉幾個栗子,看過還不懂,你打我。。。

村裡一家四口人(老爹叫A)有兩兒子(分別是A1,A2),長大了要自己種地了,就嚷嚷著要分家,把村東的一塊地給大兒子A1,村西的給二兒子A2,但是這時候戶口本上記錄的還是一家四口(對外顯示還是一家人),國土局統計村西土地面積的時候直接讓A去彙報,然後A去讓A2測量並彙報,不涉及到A1!

這就是分區:對外只展示一張表,但是表內部分區到不同的磁盤上,只需要其中一部分數據的時候可直接映射相應的區進行查找,避免了全表掃描,提升了查找,插入數據的性能,一般是數據庫層面實現的,如下圖所示:

分區可分為水平分區和垂直分區,通常水平分區用的比較多,算法有按照某個字段的大小等,某個字段的hash分等等!

啥是分表呢?還是上面那一家子,分家了之後,戶口也變了,變成了三家,國土局讓上報數據的時候,需要分別通知三家進行,比如只需要村西的統計,那麼還是隻用找二兒子A2就行了(三家已經是單獨的數據庫表了)

分表:對外展示多張小表,業務代碼訪問之前,需要先通過計算分表策略算法,來選擇具體訪問哪一張表,和分區一樣,避免了全表的訪問,分表如下圖示:

分庫:跟分表有異曲同工之妙,但是分庫的級別為數據庫級別(按上面的例子,就得提升到村子級別了),簡單來說就算是你一個庫是關係型數據庫,一個庫是nosql數據庫也是可以稱為分庫的,這對於庫的引擎,連接方式都可以有不同的實現!

分庫通常在不同的數據庫服務節點上,避免單庫宕機對全部數據服務帶來的影響,同時也提供了更大的數據庫併發能力!
關於分庫,分表,分區是不是很簡單?


現在分庫分表使用的更加的廣泛,業界也提供了大量成熟的數據庫中間件來提供分庫分表,比如mycat,sharding-jdbc等等,只需要根據業務選擇合適的分庫分表策略,結合相應組件就能輕鬆搭建起一個分庫分表數據服務,不過隨之而來的全局唯一數據,統計,連接查詢等才是更加需要關注的,更多的技術分享,敬請關注。。。


謝逅架構

這是分區表的介紹:

其中當表中的數據量不斷增大的,查詢數據的速度就會變慢,應用程序的性能就會下降,這時就應該考慮對錶進行分區的。

表進行分區後的,邏輯上表仍然是一張完整的表,只是將表中的數據在物理上存放到多個表空間(物理文件上的),這樣查詢數據時,不至於每次都掃描整張表的。 。

這是表分區的具體作用:

因為Oracle的表分區功能通過改善可管理性、性能和可用性,從而為各式應用程序帶來了極大的好處。通常,分區可以使某些查詢以及維護操作的性能大大提高的。

此外,分區還可以極大簡化常見的管理任務,分區是構建千兆字節數據系統或超高可用性系統的關鍵工具的。

其中表分區有以下優點:

那什麼時候使用分區表呢:

1、表的大小超過2GB的。

2、其中表中包含歷史數據,新的數據被增加都新的分區中的。

分區的缺點:

其中分區表相關:已經存在的表沒有方法可以直接轉化為分區表的。

不過 Oracle 提供了在線重定義表的功能了。。。。。


分享到:


相關文章: