MySQL分區(qū)的兩種形式
MySQL分區(qū)在MySQL數(shù)據(jù)庫中的重要性不言而喻,那么,究竟什么是MySQL分區(qū)呢?MySQL分區(qū)有哪兩種方式呢?
什么是數(shù)據(jù)庫分區(qū)?數(shù)據(jù)庫分區(qū)是一種物理數(shù)據(jù)庫設(shè)計技術(shù),DBA和數(shù)據(jù)庫建模人員對其相當熟悉。雖然分區(qū)技術(shù)可以實現(xiàn)很多效果,但其主要目的是為了在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減響應(yīng)時間。 MySQL分區(qū)主要有兩種形式://這里一定要注意行和列的概念(row是行,column是列)
水平分區(qū)(Horizontal Partitioning)
這種MySQL分區(qū)形式分區(qū)是對表的行進行分區(qū),通過這樣的方式不同分組里面的物理列分割的數(shù)據(jù)集得以組合,從而進行個體分割(單分區(qū))或集體分割(1個或多個分區(qū))。所有在表中定義的列在每個數(shù)據(jù)集中都能找到,所以表的特性依然得以保持。
舉個簡單例子:
一個包含十年發(fā)票記錄的表可以被分區(qū)為十個不同的分區(qū),每個分區(qū)包含的是其中一年的記錄。(朋奕注:這里具體使用的分區(qū)方式我們后面再說,可以先說一點,一定要通過某個屬性列來分割,譬如這里使用的列就是年份)
垂直分區(qū)(Vertical Partitioning)
這種MySQL分區(qū)分區(qū)方式一般來說是通過對表的垂直劃分來減少目標表的寬度,使某些特定的列被劃分到特定的分區(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ù)庫引擎中建立分區(qū)(主要是水平分區(qū))時,DBA和建模者必須設(shè)計好表的物理分區(qū)結(jié)構(gòu),不要保存冗余的數(shù)據(jù)(不同表中同時都包 含父表中的數(shù)據(jù))或相互聯(lián)結(jié)成一個邏輯父對象(通常是視圖)。這種做法會使水平分區(qū)的大部分功能失效,有時候也會對垂直分區(qū)產(chǎn)生影響。
【編輯推薦】