程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2處理數據由原來六小時優化到二十分鐘(二)

DB2處理數據由原來六小時優化到二十分鐘(二)

編輯:DB2教程

上一篇中提到了幾種常用的命令,但是在很多網站上都很少搜索到的。

 

      本篇主要說下關於DB2表空間,由於在系統中我將頻繁操作的16張表和我的業務數據表表空間采用的是同一個。這樣就導致,在處理業務數據的過程中,會訪問比較慢。所以建表空間和建表應該遵循以下原則:

1.頻繁操作的表用一個表空間

2.數據量大的表用一個表空間

3.業務表用一個表空間

4.臨時表用一個表空間。

      用戶可以在DB2中定義四種不同類型的表空間,如下所示:單一:一個單一的表空間可以包含多於一個的DB2表。這個空間由多個頁組成,每個頁都可以包含若干行,它們可能是來自表空間中定義的任何表的數據行。分段:分段表空間可以包含多於一個的DB2表。這個表空間由多組頁組成,每組頁被稱為一個段。每個段包含來自表空間中定義的某一個表的若干行。分區:分區表空間只可以包含一個表。這個空間根據分區索引的關鍵值范圍被劃分成多個區。每個分區都作為一個獨立的實體對待,允許SQL和DB2實用工具集的並發處理。LOB:LOB表空間只存儲LOB(大對象)數據。LOB包括了3個數據類型:BLOB(二進制大對象)、CLOB(字符型大對象),以及DBCLOB(雙字節字符型大對象)。

     表空間日常管理命令
本例創建的表空間pagesize大部分為32kb,故
1、創建pagesize為32kb的bufferpool
create bufferpool bp32k size 2000 pagesize 32k
2、查看bufferpool屬性
select * from syscat.bufferpools
3、更改緩沖池大小
alter bufferpool bp32k size 2000
 
 
4、創建數據頁為32kb數據塊為1024kb預取值為默認,且不使用文件系統緩存的大型DMS表空間
 
 
create large tablespace tbs_data pagesize 32k managed by database using (file '/database/tbs_data/cont0' 100M,file '/database/tbs_data/cont1' 100M) extentsize 32 prefetchsize automatic bufferpool bp32k no file system caching
 
 
5、創建 數據頁為32kb的SMS系統臨時表空間
create temporary tablespace tbs_temp pagesize 32k managed by system using ('/database/tbs_temp') bufferpool bp32k
 
 
 
6、創建 數據頁為32kb的SMS用戶臨時表空間
 
create user temporary tablespace tbs_user_temp pagesize 32k managed by system using('/database/tbs_usertemp') bufferpool bp32k
7、創建 數據頁為32kb的自動存儲管理表空間
create tablespace tbs_index pagesize 32k bufferpool bp32k
 
8、創建初始大小為100MB,增量為100MB,最大大小為100GB的 自動存儲管理表空間
create tablespace tbs_data2 initialsize 100M increasesize 100M maxsize 100G
9、查看表空間信息
list tablespaces
list tablespaces show detail
db2pd -d testdb -tablespaces
get snapshot for tablespaces on testdb
也可以查看sysibmadm.snaptbsp和sysibmadm.snapcontainer這兩個視圖
10、查看表空相關的容器信息
list tablespace containers for 7    #tablespace id
list tablespace containers for 7 show detail
11、如果DMS表空間對應的存儲中還有未分配空間,可通過alter tablespace的extend、reduce或resize選項擴展已有表空間容器的大小。其中extend用來擴展容器大小,reduce用來縮減已有容器大小,resize重新設定容器大小。對於reduce和resize,需確保更改後的表空間有足夠空間,否則DB2拒絕操作。
alter tablespace tbs_data extend (file '/database/tbs_data/cont0' 10M)
12、如果表空間容器已經沒有剩余空間,可通過add選項增加容器,當然必要的情況下也可以通過drop選項刪除容器。對於add和drop操作會在容器間發生數據重新平衡(rebalance)。如果數據量很大,rebalance時間有可能很久,對系統可能造成很大影響。
 
alter tablespace tbs_data add(file '/database/tbs_data/cont2' 100m)
13、如果使用begin new strip set選項則會在現有容器空間用完時使用新增容器,該選項使數據不會在容器間做rebalance,但會造成數據偏移。
alter tablespace tbs_data begin new stripe set (file '/database/tbs_data/cont3' 100m)
 
14、查看自動存儲管理表空間路徑
db2pd -d testdb -storagepaths
15、對於自動存儲管理表空間,無法在表空間級進行容器更改,只能在數據級別,因為自動存儲路徑是在建庫時指定的。可以使用add storage on選項為數據庫添加新的存儲路徑。在v9.7版本之前,自動存儲路徑只能增加,不能刪除。新增加的存儲路徑不會備表空間立即使用,只有在已有存儲路徑文件系統空間滿了,才會使用新增路徑,增加路徑只是為了解決容量問題。v9.7版本之後,只要對使用自動存儲管理的表空間執行rebalance,則該表空間可以立即使用新增存儲路徑。
 
alter database testdb add storage on '/database/czm'
alter tablespace 7 rebalance
 
 
16、將DMS表空間轉換成自動存儲管理表空間


alter tablespace tbs_data managed by automatic storage
alter tablespace tbs_data rebalance



作者 cuiran

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved