數(shù)據(jù)庫(kù)分區(qū)是什么?
網(wǎng)友解答: 關(guān)于數(shù)據(jù)庫(kù)分區(qū),分表,分庫(kù),我通俗易懂的來(lái)舉幾個(gè)栗子,看過(guò)還不懂,你打我。。。村里一家四口人(老爹叫A)有兩兒子(分別是A1,A2),長(zhǎng)大了要自己種地了,就嚷嚷著要分家,把村
關(guān)于數(shù)據(jù)庫(kù)分區(qū),分表,分庫(kù),我通俗易懂的來(lái)舉幾個(gè)栗子,看過(guò)還不懂,你打我。。。
村里一家四口人(老爹叫A)有兩兒子(分別是A1,A2),長(zhǎng)大了要自己種地了,就嚷嚷著要分家,把村東的一塊地給大兒子A1,村西的給二兒子A2,但是這時(shí)候戶(hù)口本上記錄的還是一家四口(對(duì)外顯示還是一家人),國(guó)土局統(tǒng)計(jì)村西土地面積的時(shí)候直接讓A去匯報(bào),然后A去讓A2測(cè)量并匯報(bào),不涉及到A1!
這就是分區(qū):對(duì)外只展示一張表,但是表內(nèi)部分區(qū)到不同的磁盤(pán)上,只需要其中一部分?jǐn)?shù)據(jù)的時(shí)候可直接映射相應(yīng)的區(qū)進(jìn)行查找,避免了全表掃描,提升了查找,插入數(shù)據(jù)的性能,一般是數(shù)據(jù)庫(kù)層面實(shí)現(xiàn)的,如下圖所示:
分區(qū)可分為水平分區(qū)和垂直分區(qū),通常水平分區(qū)用的比較多,算法有按照某個(gè)字段的大小等,某個(gè)字段的hash分等等!
啥是分表呢?還是上面那一家子,分家了之后,戶(hù)口也變了,變成了三家,國(guó)土局讓上報(bào)數(shù)據(jù)的時(shí)候,需要分別通知三家進(jìn)行,比如只需要村西的統(tǒng)計(jì),那么還是只用找二兒子A2就行了(三家已經(jīng)是單獨(dú)的數(shù)據(jù)庫(kù)表了)
分表:對(duì)外展示多張小表,業(yè)務(wù)代碼訪問(wèn)之前,需要先通過(guò)計(jì)算分表策略算法,來(lái)選擇具體訪問(wèn)哪一張表,和分區(qū)一樣,避免了全表的訪問(wèn),分表如下圖示:
分庫(kù):跟分表有異曲同工之妙,但是分庫(kù)的級(jí)別為數(shù)據(jù)庫(kù)級(jí)別(按上面的例子,就得提升到村子級(jí)別了),簡(jiǎn)單來(lái)說(shuō)就算是你一個(gè)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),一個(gè)庫(kù)是nosql數(shù)據(jù)庫(kù)也是可以稱(chēng)為分庫(kù)的,這對(duì)于庫(kù)的引擎,連接方式都可以有不同的實(shí)現(xiàn)!
分庫(kù)通常在不同的數(shù)據(jù)庫(kù)服務(wù)節(jié)點(diǎn)上,避免單庫(kù)宕機(jī)對(duì)全部數(shù)據(jù)服務(wù)帶來(lái)的影響,同時(shí)也提供了更大的數(shù)據(jù)庫(kù)并發(fā)能力!關(guān)于分庫(kù),分表,分區(qū)是不是很簡(jiǎn)單?
現(xiàn)在分庫(kù)分表使用的更加的廣泛,業(yè)界也提供了大量成熟的數(shù)據(jù)庫(kù)中間件來(lái)提供分庫(kù)分表,比如mycat,sharding-jdbc等等,只需要根據(jù)業(yè)務(wù)選擇合適的分庫(kù)分表策略,結(jié)合相應(yīng)組件就能輕松搭建起一個(gè)分庫(kù)分表數(shù)據(jù)服務(wù),不過(guò)隨之而來(lái)的全局唯一數(shù)據(jù),統(tǒng)計(jì),連接查詢(xún)等才是更加需要關(guān)注的,更多的技術(shù)分享,敬請(qǐng)關(guān)注。。。
網(wǎng)友解答:這是分區(qū)表的介紹:
其中當(dāng)表中的數(shù)據(jù)量不斷增大的,查詢(xún)數(shù)據(jù)的速度就會(huì)變慢,應(yīng)用程序的性能就會(huì)下降,這時(shí)就應(yīng)該考慮對(duì)表進(jìn)行分區(qū)的。
表進(jìn)行分區(qū)后的,邏輯上表仍然是一張完整的表,只是將表中的數(shù)據(jù)在物理上存放到多個(gè)表空間(物理文件上的),這樣查詢(xún)數(shù)據(jù)時(shí),不至于每次都掃描整張表的。 。
這是表分區(qū)的具體作用:
因?yàn)镺racle的表分區(qū)功能通過(guò)改善可管理性、性能和可用性,從而為各式應(yīng)用程序帶來(lái)了極大的好處。通常,分區(qū)可以使某些查詢(xún)以及維護(hù)操作的性能大大提高的。
此外,分區(qū)還可以極大簡(jiǎn)化常見(jiàn)的管理任務(wù),分區(qū)是構(gòu)建千兆字節(jié)數(shù)據(jù)系統(tǒng)或超高可用性系統(tǒng)的關(guān)鍵工具的。
其中表分區(qū)有以下優(yōu)點(diǎn):
那什么時(shí)候使用分區(qū)表呢:
1、表的大小超過(guò)2GB的。
2、其中表中包含歷史數(shù)據(jù),新的數(shù)據(jù)被增加都新的分區(qū)中的。
分區(qū)的缺點(diǎn):
其中分區(qū)表相關(guān):已經(jīng)存在的表沒(méi)有方法可以直接轉(zhuǎn)化為分區(qū)表的。
不過(guò) Oracle 提供了在線重定義表的功能了。。。。。