db2表空間 本地分割槽索引

2021-07-28 14:00:22 字數 4223 閱讀 8644

表分割槽、本地分割槽索引

l  概述

表分割槽是一種資料組織模式,在這種模式中,資料將以乙個或多個表列的值為依據,分割到多個稱為資料分割槽(或範圍)的儲存物件中。每乙個資料分割槽被分別儲存。這些儲存物件可以位於不同的表空間中,可以位於相同的表空間中,也可能是這兩種情況的組合。

l  建立的分割槽指定不同表分割槽

將表中的分割槽置於不同的表空間中,前提是表空間的pagesize必須相等,否則不能建立。

create

table db2inst1.gcry_pp (

rylbdmcharacter(2)  not

null,

xmvarchar(50)   not

null,

gcrqcharacter(8)  not

null,

primary

key (wybs)

)in business_tbs index

in business_tbs

partition by range ( gcrq ) (

partition part2008 starting '20080101' inclusive  ending '20081231'in b2_tbs index

in b2_tbs ,

partition part2009 starting '20090101' inclusive  ending '20091231'in business_tbs index

in business_tbs,

partition part2010 starting '20100101' inclusive  ending '20101231',

partition part2011 starting '20110101' inclusive  ending '20111231',

partition part2012 starting '20120101' inclusive  ending '20121231',

partition part2013 starting '20130101' inclusive  ending '20131231',

partition part2014 starting '20140101' inclusive  ending '20141231'

); 表分割槽b2_tbs、business_tbspagesize頁大小必須相同,否則將建立不了

l  建立的分割槽指定相同表分割槽

drop

table db2inst1.gcry_p;

create

table db2inst1.gcry_p (

idcharacter(2)  not

null,

xmvarchar(50)   not

null,

gcrqcharacter(1)  not

null,

primary

key (wybs)

) in dashuju_tbs index

in dashuju_tbs

partition by range ( gcrq ) (

partition part2008 starting '20080101' inclusive  ending '20081231',

partition part2009 starting '20090101' inclusive  ending '20091231',

partition part2010 starting '20100101' inclusive  ending '20101231',

partition part2011 starting '20110101' inclusive  ending '20111231',

partition part2012 starting '20120101' inclusive  ending '20121231',

partition part2013 starting '20130101' inclusive  ending '20131231',

partition part2014 starting '20140101' inclusive  ending '20141231'

); 修改—

增加表分割槽

--不給的分割槽名稱

alter

table db2inst1.gcry_p add partition starting '20150101' ending '20151231'

; --

給定分割槽名稱

alter

table db2inst1.gcry_p add partition part2015 starting '20150101' ending '20151231';

l簡介

db2 v9.7

提出了範圍分割槽表的分割槽索引概念,這為客戶在原有的全域性索引基礎上增加了乙個新的功能選擇。分割槽索引採用

b 樹結構,將一棵全域性大樹分解為諾幹個小樹,樹的層次將會顯著減少,這將會提高資料的插入、更新、刪除和掃瞄的效能。分割槽索引在分割槽表的

roll in/roll out

時不需要重新構建整個索引,加速了資料的滾入和滾出。

db2 v9.7

使用分割槽索引的索引組織方案,即索引資料根據表的分割槽方案分布到多個索引分割槽中,每個索引分割槽都只引用對應資料分割槽中的錶行。

乙個分割槽表可以同時存在分割槽索引和非分割槽索引。如果建立分割槽索引,那個每個索引分割槽將都包含單個資料分割槽的索引條目,索引葉子節點中的 rid 也將只指向單個資料分割槽。

在我們使用 alter table 語句的 attachpartition 子句將資料 roll in 或者 roll out 分割槽表時,分割槽索引將特別有用。如果使用非分割槽索引,那麼必須先發出 set integrity 語句,新新增的分割槽中的資料才能進入聯機狀態。這個過程可能非常消耗時間,並可能消耗大量日誌空間。當使用分割槽索引時這些開銷將會被消除。

分割槽索引的每個分割槽均採用 b 樹結構儲存,由於分割槽後乙個大型 b 樹被劃分為若干小型 b 樹,樹的層數將會減少,這會提高資料的插入、更新、刪除以及掃瞄的效能。同時我們執行查詢時,db2 將會採用分割槽消除優化方法提高掃瞄效能和並行性。分割槽消除技術幫助優化器先過濾了不需要的索引分割槽,只需要掃瞄相應的分割槽就能完成查詢,這比掃瞄非分割槽的索引更為高效。

l總結

1.        分割槽索引主要是針對分割槽表才可以申明建立分割槽索引。

2.        不管是分割槽表還是非分割槽表,主鍵索引都是非分割槽索引。

3.        非分割槽表,建立索引時不可使用「partitioned」關鍵字申明。

4.        只有分割槽表索引,在建立的時候可以使用「partitioned」關鍵字申明,不加此關鍵字,預設建立的是分割槽索引。

申明為分割槽索引

create

index db2inst1.gcrq_index

on db2inst1.gcry_p

( gcrq desc )

partitioned;

申明為非分割槽索引

create

index db2inst1.gcrq_index

on db2inst1.gcry_p

( gcrq desc )

not partitioned;

3.檢視表的索引資訊

select tabname tab_name, indname inx_name,tbspaceid

from syscat.indexes where tabname=

'gcry_p'

4.檢視索引分割槽資訊

--索引分割槽資訊

select indname ,datapartitionid from syscat.indexpartitions

l大資料表,按照合適的字段進行分割槽,並給此字段建立分割槽索引,將大資料切塊。

Db2效能優化 表分割槽

前言 實驗環境 os 名稱 microsoft windows server 2008 r2 enterprise os 版本 6.1.7601 service pack 1 build 7601 product name db2 enterprise server edition license ...

db2 最大分割槽數 DB2表分割槽資料清空維護

清空一張表的資料,我們可以truncate這張表,亦或是用replace的方式載入乙個空檔案來清空表。那麼如果現在我只需清空表的某個分割槽的資料話,要如何來做呢?2b青年說 直接delete 條件嘛。那好,現在我有張表的情況是這樣的 每個分割槽中都有1g多點的資料,現在用delete來刪除1號分割槽...

db2 表空間,codepage相關

create large tablespace indexspace1 managed by database using file index extentsize 32 prefetchsize 32 overhead 10.50 transferrate 0.14 codepage 安裝120...