MySQL數(shù)據(jù)庫分區(qū)的優(yōu)點(diǎn)表現(xiàn)
我們大家都知道MySQL數(shù)據(jù)庫分區(qū)屬于一種物理的數(shù)據(jù)庫相關(guān)設(shè)計技術(shù),DBA與MySQL數(shù)據(jù)庫相關(guān)人員對其可以說是相當(dāng)?shù)氖煜?。雖然實(shí)現(xiàn)分區(qū)技術(shù)有很多種,但其主要目的是為了在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減響應(yīng)時間。
分區(qū)主要有兩種形式:
這里一定要注意行和列的概念(row是行,column是列)
1. 水平分區(qū)(Horizontal Partitioning)這種形式分區(qū)是對表的行進(jìn)行MySQL數(shù)據(jù)庫分區(qū),通過這樣的方式不同分組里面的物理列分割的數(shù)據(jù)集得以組合,從而進(jìn)行個體分割(單分區(qū))或集體分割(1個或多個分區(qū))。所有在表中定義的列在每個數(shù)據(jù)集中都能找到,所以表的特性依然得以保持。
舉個簡單例子:一個包含十年發(fā)票記錄的表可以被分區(qū)為十個不同的分區(qū),每個分區(qū)包含的是其中一年的記錄。(朋奕注:這里具體使用的分區(qū)方式我們后面再說,可以先說一點(diǎn),一定要通過某個屬性列來分割,譬如這里使用的列就是年份)
2. 垂直分區(qū)(Vertical Partitioning) 這種分區(qū)方式一般來說是通過對表的垂直劃分來減少目標(biāo)表的寬度,使某些特定的列 被劃分到特定的分區(qū),每個分區(qū)都包含了其中的列所對應(yīng)的行。
舉個簡單例子:一個包含了大text和BLOB列的表,這些text和BLOB列又不經(jīng)常被訪問,這時候就要把這些不經(jīng)常使用的text和BLOB了劃分到另一個分區(qū),在保證它們數(shù)據(jù)相關(guān)性的同時還能提高訪問速度。
在數(shù)據(jù)庫供應(yīng)商開始在他們的數(shù)據(jù)庫引擎中建立MySQL數(shù)據(jù)庫分區(qū)(主要是水平分區(qū))時,DBA和建模者必須設(shè)計好表的物理分區(qū)結(jié)構(gòu),不要保存冗余的數(shù)據(jù)(不同表中同時都包含父表中的數(shù)據(jù))或相互聯(lián)結(jié)成一個邏輯父對象(通常是視圖)。這種做法會使水平分區(qū)的大部分功能失效,有時候也會對垂直分區(qū)產(chǎn)生影響
分區(qū)的一些優(yōu)點(diǎn)包括:
與單個磁盤或文件系統(tǒng)分區(qū)相比,可以存儲更多的數(shù)據(jù)。
對于那些已經(jīng)失去保存意義的數(shù)據(jù),通常可以通過刪除與那些數(shù)據(jù)有關(guān)的分區(qū),很容易地刪除那些數(shù)據(jù)。相反地,在某些情況下,添加新數(shù)據(jù)的過程又可以通過為那些新數(shù)據(jù)專門增加一個新的分區(qū),來很方便地實(shí)現(xiàn)。
通常和分區(qū)有關(guān)的其他優(yōu)點(diǎn)包括下面列出的這些。MySQL數(shù)據(jù)庫分區(qū)中的這些功能目前還沒有實(shí)現(xiàn),但是在我們的優(yōu)先級列表中,具有高的優(yōu)先級;我們希望在5.1的生產(chǎn)版本中,能包括這些功能。
一些查詢可以得到極大的優(yōu)化,這主要是借助于滿足一個給定WHERE 語句的數(shù)據(jù)可以只保存在一個或多個分區(qū)內(nèi),這樣在查找時就不用查找其他剩余的分區(qū)。因?yàn)榉謪^(qū)可以在創(chuàng)建了分區(qū)表后進(jìn)行修改,所以在***次配置分區(qū)方案時還不曾這么做時,可以重新組織數(shù)據(jù),來提高那些常用查詢的效率。
涉及到例如SUM() 和 COUNT()這樣聚合函數(shù)的查詢,可以很容易地進(jìn)行并行處理。這種查詢的一個簡單例子如 “SELECT salesperson_id, COUNT(orders) as order_total FROM sales GROUP BY salesperson_id;”。通過“并行”, 這意味著該查詢可以在每個MySQL數(shù)據(jù)庫分區(qū)上同時進(jìn)行,最終結(jié)果只需通過總計所有分區(qū)得到的結(jié)果。
通過跨多個磁盤來分散數(shù)據(jù)查詢,來獲得更大的查詢吞吐量。
【編輯推薦】
- MySQL數(shù)字類型中的三種常用種類
- MySQL數(shù)據(jù)庫命令的基礎(chǔ)簡介
- 獲得更為強(qiáng)大的MySQL數(shù)據(jù)庫方案
- MySQL隱藏空間相關(guān)問題的解答
- Mysql大小寫中易出現(xiàn)的問題的解決