国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

通過分區(Partition)提升MySQL性能

2024-07-24 12:55:55
字體:
來源:轉載
供稿:網友

  今天這么激動又想寫文章的原因是mysql5.1的發布帶來了設計超強動力數據庫的強有力的武器,任何mysql的dba都應該盡快學習并使用它。我覺得如果­能很好滴使用這個5.1版帶來的新特性,dba可以使自己管理的vldb(不知道什么是vldb?告訴你,是好大好大的數據庫的意思,very large db)或數據倉庫奇跡般的獲得巨大的性能提升。

  什么是數據庫分區?

  數據庫分區是一種物理數據庫設計技術,dba和數據庫建模人員對其相當熟悉。雖然分區技術可以實現很多效果,但其主要目的是為了在特定的sql操作中減少數據讀­寫的總量以縮減響應時間。

  分區主要有兩種形式://這里一定要注意行和列的概念(row是行,column是列)

  水平分區(horizontal partitioning)

  這種形式分區是對表的行進行分區,通過這樣的方式不同分組里面的物理列分割的數據集得以組合,從而進行個體分割(單分區)或集體分割(1個或多個分區)。所有在­表中定義的列在每個數據集中都能找到,所以表的特性依然得以保持。

  舉個簡單例子:一個包含十年發票記錄的表可以被分區為十個不同的分區,每個分區包含的是其中一年的記錄。(朋奕注:這里具體使用的分區方式我們后面再說,可以先­說一點,一定要通過某個屬性列來分割,譬如這里使用的列就是年份)

  垂直分區(vertical partitioning)

  這種分區方式一般來說是通過對表的垂直劃分來減少目標表的寬度,使某些特定的列被劃分到特定的分區,每個分區都包含了其中的列所對應的行。

  舉個簡單例子:一個包含了大text和blob列的表,這些text和blob列又不經常被訪問,這時候就要把這些不經常使用的text和blob了劃分到另一­個分區,在保證它們數據相關性的同時還能提高訪問速度。

  在數據庫供應商開始在他們的數據庫引擎中建立分區(主要是水平分區)時,dba和建模者必須設計好表的物理分區結構,不要保存冗余的數據(不同表中同時都包含父­表中的數據)或相互聯結成一個邏輯父對象(通常是視圖)。這種做法會使水平分區的大部分功能失效,有時候也會對垂直分區產生影響。

  在mysql 5.1中進行分區

  mysql5.1中最激動人心的新特性應該就是對水平分區的支持了。這對mysql的使用者來說確實是個好消息,而且她已經支持分區大部分模式: 

   range(范圍) –

  這種模式允許dba將數據劃分不同范圍。例如dba可以將一個表通過年份劃分成三個分區,80年代(1980's)的數據,90年代(1990's)的數據以及­任何在2000年(包括2000年)后的數據。 

  hash(哈希) –

  這中模式允許dba通過對表的一個或多個列的hash key進行計算,最后通過這個hash碼不同數值對應的數據區域進行分區。例如dba可以建立一個對表主鍵進行分區的表。

  key(鍵值) –

  上面hash模式的一種延伸,這里的hash key是mysql系統產生的。
        
  list(預定義列表) –

  這種模式允許系統通過dba定義的列表的值所對應的行數據進行分割。例如:dba建立了一個橫跨三個分區的表,分別根據2004年2005年和2006年值所對­應的數據。

  composite(復合模式) -

  很神秘吧,哈哈,其實是以上模式的組合使用而已,就不解釋了。舉例:在初始化已經進行了range范圍分區的表上,我們可以對其中一個分區再進行hash哈希分­區。

  

共4頁: 上一頁 1 [2] [3] [4] 下一頁

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白山市| 大渡口区| 灌南县| 大埔区| 墨玉县| 于田县| 广东省| 岫岩| 佛冈县| 石首市| 开阳县| 酒泉市| 射阳县| 宝山区| 新邵县| 修武县| 霍林郭勒市| 荥经县| 上栗县| 腾冲县| 长顺县| 裕民县| 金秀| 洛南县| 和田市| 辰溪县| 嘉定区| 崇左市| 抚州市| 夹江县| 夏津县| 鹿邑县| 荃湾区| 田阳县| 武宣县| 司法| 五指山市| 荆州市| 泗水县| 饶平县| 日照市|