日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解人大金倉數(shù)據(jù)庫的垂直分區(qū)V3.0

1、概述

對一個大問題進行劃分處理是計算機領(lǐng)域常見的手段。在數(shù)據(jù)庫應(yīng)用中,對于一個大表,既可以選擇進行水平分區(qū),也可以選擇進行垂直分區(qū)。水平分區(qū)在主流的數(shù)據(jù)庫產(chǎn)品中都得到了實現(xiàn),垂直分區(qū)一般要靠數(shù)據(jù)庫設(shè)計人員自行實現(xiàn)(將一個表劃分為多個表)。金倉數(shù)據(jù)庫V6在數(shù)據(jù)庫內(nèi)核中實現(xiàn)了表的垂直分區(qū),它可以簡化數(shù)據(jù)庫設(shè)計人員的工作,并為應(yīng)用程序提供透明的SQL訪問。

使用垂直分區(qū)主要利用了應(yīng)用對表中字段訪問的如下特性:

(1)字段訪問頻率的不均勻性:即某些字段訪問特別頻繁,其他字段則訪問的較少??梢詤⒖?0/20原則。

(2)應(yīng)用對字段訪問的聚集性:即應(yīng)用中的查詢傾向于一起訪問某些字段,如a、b、c三列總是一起訪問;d、e兩列總是一起訪問??梢詤⒖季植啃栽怼?/p>

(3)字段訪問順序的依賴性:即應(yīng)用中的查詢按照某個特定的順序訪問字段,例如訪問d、e字段前總是先訪問a、b、c字段。

在應(yīng)用對表的訪問滿足以上特性之一時,使用垂直分區(qū)可以使訪問/修改這些列的查詢不再需要訪問/修改其他無關(guān)列,從而減少物理I/O。

本文給出了一種根據(jù)“應(yīng)用的訪問模式”確定如何對表進行垂直分區(qū)(即確定分區(qū)表中字段)的思路,并且以一個應(yīng)用為例。

2、金倉數(shù)據(jù)庫V6中垂直分區(qū)實現(xiàn)方法

金倉數(shù)據(jù)庫V6支持基于主碼連接的垂直分區(qū),語法如下:

 
 
 
 
  1. CREATE TABLE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] [SchemaName.]TableName  
  2. (  
  3. { ColumnName  [IDENTITY [(Seed, Increment)]]  
  4.    [ DEFAULT { NULL | USER |  } ] [  ]  
  5.    | [  ]  
  6.  } [, ...n ]  
  7. ) [  ]  
  8. [TABLESPACE TablespaceName]  
  9.    
  10.  ::= PARTITION BY COLUMN 
  11.               ( [PartitionName]  
  12.                ({ ColumnName [, ...n ])  
  13.                [TABLESPACE TablespaceName] ) [, ...n ] 

垂直分區(qū)是按列進行分區(qū),即把一條記錄分開多個地方保存,每個分區(qū)的行數(shù)相同,列順序與PARTITION子句中的順序。

包括存放沒指定的列的分區(qū),分區(qū)數(shù)目必須大于等于二,各分區(qū)表間允許字段重復,但不能完全重復。

垂直分區(qū)基表必須有主碼字段,如果分區(qū)沒有指定主碼字段,將在分區(qū)中加入基表中的主碼字段。

分區(qū)表不能有基表字段之外的字段,表中有但分區(qū)表沒指定的字段默認放入一個新的分區(qū)表。

主碼字段和重復字段不能指定為IDENTITY。

如果沒有指定分區(qū)名,系統(tǒng)會自動建立分區(qū)名,分區(qū)的命名規(guī)則為基表名_VP_[1…N]。分區(qū)和基表在同一命名空間。

如果沒有指定表空間,缺省存放到分區(qū)基表所在的表空間中。

不支持建立跨分區(qū)的表級約束。

例子:

 
 
 
 
  1. CREATE TABLE base (  
  2. col1 INT, col2 INT, col3 INT, col4 INT, col5 CHAR(100),  
  3. PRIMARY KEY(col1, col2)  
  4. )  
  5. PARTITION BY COLUMN (P1(col1, col2, col3, col4), P2(col5)); 

將會創(chuàng)建名為BASE的基表和P1、P2兩個分區(qū)表。P1和P2的結(jié)構(gòu)如圖所示,兩個分區(qū)都包含元組控制信息(元組頭)、各分區(qū)的分區(qū)列和作為連接索引的主碼列col1和col2。

3、分區(qū)方案的選擇

在決定如何分區(qū)選擇時首先要了解應(yīng)用的場景,然后考慮分區(qū)對I/O的影響:

了解應(yīng)用場景(可以在應(yīng)用開發(fā)過程中進行)

獲得應(yīng)用中包含的全部查詢;

記錄查詢的順序;

標記查詢執(zhí)行的次數(shù)(或者是百分比);

記錄查詢平均訪問的元組數(shù);

看是否有滿足使用垂直分區(qū)的場景

將查詢按照涉及的表分組(涉及多個表的出現(xiàn)在多個組中);

對每一組查詢,做一個表格,表格的列是該組查詢涉及的表的列和列長度,表格的行是查詢;

對于該組每一個查詢,標記該查詢涉及的列;

結(jié)合查詢的頻率和訪問元組數(shù)粗略查看是否有滿足使用垂直分區(qū)的場景;

計算I/O量獲得分區(qū)方法

在滿足場景的組中選擇幾個分區(qū)方案,包括分區(qū)的類型和列的組合。

根據(jù)分區(qū)類型計算各分區(qū)的元組I/O量。

注意盡可能考慮訪問模式,即查詢執(zhí)行順序帶來的物理I/O差別。可能帶來的差別有:

1)去掉重復計算IO。例如一個涉及分區(qū)P1的查詢后會接著執(zhí)行一條更新該分區(qū)的語句,則更新語句的讀就不會是物理讀。

2)考慮命中率問題。不同分區(qū)的頁面命中率需要根據(jù)分區(qū)的訪問頻率進行估計。

計算不分區(qū)方案和每個分區(qū)方案的I/O量,I/O量為查詢數(shù)*元組數(shù)*該分區(qū)元組I/O量。

比較選擇I/O量最小的方案。

驗證分區(qū)帶來的I/O減少

可能會有實際情況與計算不符的情況發(fā)生,因為計算中的I/O量是邏輯I/O量而不是準確的物理I/O,實際測試每種方案,收集統(tǒng)計信息(每張表的讀寫信息、頁面的命中率),根據(jù)實際值調(diào)整方案。

4、實例:TPC-C的垂直分區(qū)選擇

TPC-C是一個典型的OLTP類型的負載。TPC-C測試中共有9張表,包括c_warehouse、c_customer、c_district、c_stock、c_order、c_order_line、c_item、c_history和c_new_order;另外,共有5種事務(wù)場景:new order、payment、order-status、delivery和stock-level,其中order-status和stock-level是純查詢事務(wù),其它是以更新為主的事務(wù)。

分析5種事務(wù)包含的查詢,除去c_warehouse、c_distric表等小表,以及更新較多的大表,如c_order和c_order_line,我們可以知道在c_stock表和c_customer表上進行垂直劃分可以帶來較大效率的提升。我們可以根據(jù)實際待測試的環(huán)境,按照前面描述的原則進行垂直劃分方案的設(shè)計、測試和驗證。

【責任編輯:彭凡 TEL:(010)68476606】


分享文章:詳解人大金倉數(shù)據(jù)庫的垂直分區(qū)V3.0
當前URL:http://www.dlmjj.cn/article/dhedhco.html