国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

DB2 數據庫表空間管理

IT那活兒 / 1964人閱讀
DB2 數據庫表空間管理

上午剛剛上班,突然被拉到一個客戶群里,咨詢DB2數據庫怎么關閉表空間自動增長,看到這個問題,我想簡單啊,和oracle一樣,一條命令就行了,然后我就把這個命令發給客戶了,過了一個客戶說執行成功了,但是增加表空間大小還是不行,我就想到了DB2數據庫空間的特殊性,根據不通類型的表空間增加表空間大小的方式也不一樣,下面請跟著我的步伐一起了解下DB2表空間的類型,及如何維護管理。


DB2表空間簡介:


管理方式:SMS,DMS,自動存儲管理


存儲類型:系統表空間,數據表空間,系統臨時表空間,用戶臨時表空間。


DB2數據庫在建庫的時候會自動創建三個表空間


系統表空間(system   tablespace),用來存儲系統表,也就是數據字典的信息,一個數據庫只能有一個系統表空間;


臨時表空間(temporarytablespace),用來保存語句執行時產生的中間臨時數據,如join,排序等操作都可能產生一些臨時數據;


用戶表空間(user     tablespace),用來存儲表,索引,大對象等數據;


下面我們就詳細的看看怎么對DB2的表空間進行管理。


創建表空間


在創建表空間前,還需要創建一個緩沖池

db2"CREATE BUFFERPOOL BP32K SIZE 10000 PAGESIZE 32K"


問:什么是緩沖池呢?

答:緩沖池(),Bufferpool是數據庫最重要的內存區,用來緩存數據,提高性能。創建緩沖池時,size表示頁數,pagesize表示大小,size*pagesize就是緩沖池的內存大小。

在建庫的時候,DB2會自動創建一個名為IBMDEFAULEBP的緩沖池,如果在建庫時候沒有指定pagesize那么IBMDEFAULEBP的默認pagesize是4K。


每個表空間都有一個Bufferpool與之對應,多個表空間可以共享一個Bufferpool,但要求Bufferpool的pagesize大小必須與表空間的pagesize匹配,否則無法創建。緩沖池創建完成過后,再繼續創建表空間。


創建DMS管理的數據表空間

db2 "CREATE LARGE TABLESPACE tbs_data  PAGESIZE 32K MANAGED BY DATABASE USING (FILE /data1/data/cont0 5M,FILE /data1/data/cont1 5M) 

EXTENTSIZE 32 PREFETCHSIZE automatic BUFFERPOOL BP32K NO FILE SYSTEM CACHING"


MANAGEDBY DATABASE表示表空間的分配和管理由DB2負責,即DMS(database-managedspace),Using指定表空間的容器,DMS支持的容器類型是文件(file)和裸設備(rawdevice)。


DMS類型的表空間在創建時即分配空間,創建后可通過命令對表空間容器進行增刪改。對于數據來說,建議用DMS管理。

NOFILE SYSTEM CACHING 該選項的目的是關閉文件系統緩存原因是DB2使用Bufferpool緩存數據,為了減小額外的開銷,不必使用文件緩存,這個選項是DB29.5 版本的默認選項。


注意:大對象()數據的獲取直接通過磁盤,無法通過Bufferpool緩存,因為可以考慮將大對象創建在獨立的表空間上,并使用filesystem caching 選項。


創建SMS管理的臨時表空間


db2"CREATE TEMPORARY TABLESPACE tbs_temp PAGESIZE 32K MANAGEDBY SYSTEM USING(/data1/data/tbs_temp) BUFFERPOOL BP32K"

系統臨時表空間用來存儲DB2產生的一些臨時數據。

MANAGEDBY SYSTEM表示空間的分配和管理由操作系統負責,即SMS(system-managedspace)Using指定表空間的容器,


SMS支持的容器類型只能是目錄,無需指定大小,只要路徑所屬的文件系統有空間,就可以被表空間使用。


SMS的優點是比較容易管理,缺點是性能比DMS差一些,大概差5%~10%左右,對于臨時表空間來說,建議使用SMS管理。


創建SMS管理的用戶臨時表空間

db2"CREATE USER TEMPORARY TABLESPACE tbs_user_temp PAGESIZE 32KMANAGED BY SYSTEM USING (/data1/data/tbs_usertemp) BUFFERPOOLBP32K"


與系統表空間類似,用戶臨時表空間也用保存臨時數據,但他存儲的是用戶自定義的臨時表,對于用戶臨時表空間來說,建議使用SMS管理。


創建自動存儲管理(Automatic Storage)的表空間


創建數據頁為32kb的自動存儲管理表空間

createtablespace tbs_index pagesize 32k bufferpool bp32k



創建初始大小為100MB,增量為100MB,最大大小為100GB的自動存儲管理表空間

createtablespace tbs_data2 initialsize 100M increasesize 100M maxsize 100G



上面這種直接創建的自動存儲的表空間,他的容器路徑在哪里呢,我們查看下

db2"SELECT substr(TBSP_NAME,1,30) as  TBSP_NAME,STORAGE_GROUP_NAME FROM table (MON_GET_TABLESPACE(, -2))"


db2"SELECT VARCHAR(STORAGE_GROUP_NAME, 30) AS STOGROUP,STORAGE_GROUP_ID, VARCHAR(DB_STORAGE_PATH, 40) AS STORAGE_PATH FROMTABLE(ADMIN_GET_STORAGE_PATHS(,-1)) AS T"


可以看出不指定自動存儲的group情況下,會使用系統默認的自動存儲空間,如果在創建數據庫的時候沒有指定自動存儲的路徑,默認路徑就會在實例用戶的文件下。


那該如何把自動存儲的表空間放在規劃好的空間呢

需要我們先創建一個STOGROUP


db2"CREATE STOGROUP sg ON  /data1/path1, /data1/path2 "



在添加表空間的時候指定對應的組就行了

db2"create tablespace tbstest managed by automatic storage USINGSTOGROUP sg"


注意:以上兩個命令在V9.7版本中是不存在的


修改表空間

上面扯了一堆,把DB2的表空間類型和創建方式講了一下,然后我們回到最開始的問題,客戶的問題,如何關閉表空間自動增長的問題,看著這個問題,直接一條命令發給了客戶,客戶執行后說沒有關閉啊,我擴展表空間還是擴展不了啊。

db2"alter tablespace tablespacename  autoresize no"


通過上面的命令就可以把表空間的自動增長關了,但是客戶說沒起效果,就讓客戶查了下表殼空間的信息。


通過查看發現對應表空間的自增長已經是NO了啊,然后就看到這個表空間的AS類型是自動存儲的表空間。然后客戶通過非自動存儲表空間擴展的方式來的增加表空間大小的,這肯定不對啊。那下面我們就詳細說下DMS管理的表空間在自動存儲和非自動存儲下怎么擴展表空間。


自動存儲表空間


DB2是個很有意思的數據庫,不同版本之間一些函數,命令等會有差異。在V9.7版本中自動存儲的表空間通過以下命令來擴展。


db2 "alter database sample  add storage on /home/db2inst1/test"

db2 "alter tablespace USERSPACE1 rebalance"


擴展好自動存儲路徑后,通過對表空間進行重新平衡,使表空間使用新的路徑,在V10以上的版本中,通過一下命令擴展。


db2"alter STOGROUP sg add /data1/path2"

找到對應表空間所在存儲組,然后對該組進行空間添加。


非自動存儲表空間

非自動擴展的表空間,在擴展的時候需要添加容器或者擴展容器,容器類型也分為文件和裸設備兩種:


DMS+文件

如果表空間容器已經沒有剩余空間,可通過add選項增加容器,當然必要的情況下也可以通過drop選項刪除容器。對于add和drop操作會在容器間發生數據重新平衡(rebalance)。如果數據量很大,rebalance時間有可能很久,對系統可能造成很大影響。


altertablespace tbs_data add(file /database/tbs_data/cont2 100m) 


如果使用beginnew strip set選項則會在現有容器空間用完時使用新增容器,該選項使數據不會在容器間做rebalance,但會造成數據偏移。

altertablespace tbs_data begin new stripe set (file/database/tbs_data/cont3 100m)


擴展:


如果DMS表空間對應的存儲中還有未分配空間,可通過altertablespace的extend、reduce或resize選項擴展已有表空間容器的大小。其中extend用來擴展容器大小,reduce用來縮減已有容器大小,resize重新設定容器大小。對于reduce和resize,需確保更改后的表空間有足夠空間,否則DB2拒絕操作。

altertablespace tbs_data extend (file /database/tbs_data/cont0 10M)


DMS+裸設備


新增

db2 "alter tablespace tbs_data  ADD ( Device /dev/rlv_8g_308 8190M ) "

db2 "alter tablespace TBS_DATA begin new stripe set ( Device /dev/rlv_8g_108 8190M)"

擴展

db2"alter tablespace tbs_data  extend ( Device /dev/rlv_8g_3088190M )"


以上就是我對DB2表空間在運維過程中總結的一些經驗,希望可以幫助到大家,如有疑問歡迎一起討論。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130068.html

相關文章

  • 新手也能實現,基于SpirngBoot2.0+ 的 SpringBoot+Mybatis 多數據源配

    摘要:下面基于,帶著大家看一下中如何配置多數據源。注意版本不一致導致的一些小問題。配置配置兩個數據源數據庫和數據庫注意事項在配置數據源的過程中主要是寫成和。五啟動類此注解表示啟動類這樣基于的多數據源配置就已經完成了,兩個數據庫都可以被訪問了。 在上一篇文章《優雅整合 SpringBoot+Mybatis ,可能是你見過最詳細的一篇》中,帶著大家整合了 SpringBoot 和 Mybatis...

    shiina 評論0 收藏0
  • DBASK問答集萃(2)

    摘要:新晉技術專家下面是墨天輪部分新晉的技術專家。大家可以點擊往期閱讀墨天輪技術專家邀請函了解詳情,申請成為我們的技術專家,加入專家團隊,與我們一起創建一個開放互助的數據庫技術社區。新關聯公眾號墨天輪是一個開放互助的數據庫技術社區。 引言 近期我們在DBASK小程序增加了數據庫 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的專題欄目和一些新的技術...

    liuchengxu 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<