1 介紹
1.1 表空間類型
存儲類型 |
表空間類型 |
注釋 |
DMS |
All permanent data. Regular table space. |
系統表空間 |
SMS |
System Temporary data |
系統臨時空間 |
DMS |
All permanent data. Large table space |
用戶表空間 |
DMS |
User Temporary data |
用戶臨時空間 |
SMS |
All permanent data. Regular table space. |
用戶表空間 |
1.2 存儲類型
表空間存儲類型:
- 系統管理的空間(system managed space,SMS):由操作系統的文件系統管理器和管理空間。在DB2 V9之前,如果不帶任何參數創建數據庫或表空間,就會導致所有表空間作為SMS對象創建。
- 數據庫管理的表空間(database managed space,DMS):由DB2數據庫管理程序控制存儲空間。表空間容器可使用文件系統或裸設備。需要更多的維護
- DMS的自動存儲(automatic storage with DMS):自動存儲實際上不是一種單獨的表空間類型,而是一種處理DMS存儲的不同方式。
1.3 表空間介紹
表空間介紹:
TBSPACE |
作用 |
SYSCATSPACE |
系統目錄表空間,數據字典,系統信息不可更改和不可刪除 |
TEMPSPACE |
臨時表空間,排序時需要額外空間的操作 |
USERSPACE |
創建表時沒指定表空間,默認的用戶表空間 |
1.4 表空間存儲空間
表空間存儲空間上限:表空間存儲上限64GB到64TB。
表空間類型 | 4KB | 8KB | 16KB | 32KB |
SMS表空間 | 64GB | 128GB | 256GB | 512GB |
臨時SMS和臨時自動存儲器 | 8TB | 16TB | 32TB | 64TB |
DMS和非臨時自動存儲器表空間(常規) | 64GB | 128GB | 256GB | 512GB |
DMS、臨時DMS和非臨時自動存儲器表空間(大型) | 8TB | 16TB | 32TB | 64TB |
參考官方文檔:https://www.ibm.com/docs/zh/db2/10.5?topic=data-page-table-table-space-size
2 創建表空間
DB2 V9版本以上創建的表空間默認是自動存儲器表空間。
在DB2 V9.7版本之前,對於在最初沒有啟用自動存儲的數據庫,后期不能啟用自動存儲的特性;但在DB2 V9.7及以后的版本中,開啟未啟用自動存儲,后期可以轉換為自動存儲數據庫,同樣,現有的DMS表空間現在可轉換為使用自動存儲。使用alter database語句來為現有數據庫啟用自動存儲。
創建表空間語法:
>>-CREATE--+-----------------------+---------------------------->
+-LARGE-----------------+
+-REGULAR---------------+
| .-SYSTEM-. |
'-+--------+--TEMPORARY-'
'-USER---'
>--TABLESPACE--tablespace-name---------------------------------->
>--+-----------------------------------------------------------+-->
| .-DATABASE PARTITION GROUP-. |
'-IN--+--------------------------+--db-partition-group-name-'
>--+--------------------------+--------------------------------->
'-PAGESIZE--integer--+---+-'
'-K-'
.-MANAGED BY--AUTOMATIC STORAGE--| storage-group |--| size-attributes |--.
>--+------------------------------------------------------------------------+-->
'-MANAGED BY--+-SYSTEM--| system-containers |--------------------------+-'
'-DATABASE--| database-containers |--| size-attributes |-'
>--+---------------------------------+-------------------------->
'-EXTENTSIZE--+-number-of-pages-+-'
'-integer--+-K-+--'
'-M-'
>--+-----------------------------------+------------------------>
'-PREFETCHSIZE--+-AUTOMATIC-------+-'
+-number-of-pages-+
'-integer--+-K-+--'
'-M-'
>--+-----------------------------+------------------------------>
'-BUFFERPOOL--bufferpool-name-'
>--+--------------------------------------+--------------------->
'-OVERHEAD--+-number-of-milliseconds-+-'
'-INHERIT----------------'
>--+------------------------+----------------------------------->
+-NO FILE SYSTEM CACHING-+
'-FILE SYSTEM CACHING----'
>--+------------------------------------------+----------------->
'-TRANSFERRATE--+-number-of-milliseconds-+-'
'-INHERIT----------------'
>--+--------------------------------+--------------------------->
'-DATA TAG--+-integer-constant-+-'
+-INHERIT----------+
'-NONE-------------'
>--+---------------------------------+-------------------------><
'-DROPPED TABLE RECOVERY--+-ON--+-'
'-OFF-'
storage-group
|--+-----------------------------------+------------------------|
'-USING STOGROUP--storagegroup-name-'
size-attributes
|--+---------------------+--+-----------------------------+----->
'-AUTORESIZE--+-NO--+-' '-INITIALSIZE--integer--+-K-+-'
'-YES-' +-M-+
'-G-'
>--+------------------------------------+----------------------->
'-INCREASESIZE--integer--+-PERCENT-+-'
'-+-K-+---'
+-M-+
'-G-'
>--+-----------------------------+------------------------------|
'-MAXSIZE--+-integer--+-K-+-+-'
| +-M-+ |
| '-G-' |
'-NONE-----------'
system-containers
.----------------------------------------------------------------------.
| .-,------------------. |
V V | |
|----USING--(----'container-string'-+--)--+-----------------------------+-+--|
'-| on-db-partitions-clause |-'
database-containers
.--------------------------------------------------------------.
V |
|----USING--| container-clause |--+-----------------------------+-+--|
'-| on-db-partitions-clause |-'
container-clause
.-,---------------------------------------------------.
V |
|--(----+-FILE---+--'container-string'--+-number-of-pages-+-+--)--|
'-DEVICE-' '-integer--+-K-+--'
+-M-+
'-G-'
on-db-partitions-clause
|--ON--+-DBPARTITIONNUM--+-------------------------------------->
'-DBPARTITIONNUMS-'
.-,--------------------------------------------------.
V |
>--(----db-partition-number1--+--------------------------+-+--)--|
'-TO--db-partition-number2-'
創建SMS表空間
db2 "create [large] tablespace TBS_NAME managed by system using('path','path')"
創建DMS類型表空間
db2 “create [large] tablespace TBS_NAME managed by database using (file/device 'container string' number of pages K|M|G,file/device 'container string' number of pages K|M|G)”
創建pagesize為8K的表空間
db2 "create buffer buffer8k pagesize 8192"
db2 "create tablespace NAME pagesize 8192 managed by system using ('path') bufferpool buffer8k"
PS:DB2表空間默認的pagesize=4096(4k),創建pagesize=8192(8k)的表空間需要指定一個pagesize=8192的bufferpool。
創建系統表空間(存儲分組、排序、連接、重組、創建索引操作等中間結果)
db2 "create system temporary tablespace TBS_NAME managed by system using('path','path')"
創建用戶臨時表空間(用來批量插入、批量更新和批量刪除以加快速度)
db2 "create user temporary tablespace NAME managed by database using(file 'file' 5000)"
3 查看表空間
3.1 查看表空間信息
db2 list tablespaces show detail
[inst105]# db2 list tablespaces show detail
Tablespaces for Current Database
Tablespace ID = 0
Name = SYSCATSPACE
Type = Database managed space
Contents = All permanent data. Regular table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 10240
Useable pages = 10236
Used pages = 9612
Free pages = 624
High water mark (pages) = 9612
Page size (bytes) = 16384
Extent size (pages) = 4
Prefetch size (pages) = 4
Number of containers = 1
Tablespace ID = 1
Name = TEMPSPACE1
Type = System managed space
Contents = System Temporary data
State = 0x0000
Detailed explanation:
Normal
Total pages = 1
Useable pages = 1
Used pages = 1
Free pages = Not applicable
High water mark (pages) = Not applicable
Page size (bytes) = 16384
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
Tablespace ID = 2
Name = USERSPACE1
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 2048
Useable pages = 2016
Used pages = 224
Free pages = 1792
High water mark (pages) = 288
Page size (bytes) = 16384
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
Tablespace ID = 3
Name = SYSTOOLSPACE
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 2048
Useable pages = 2044
Used pages = 88
Free pages = 1956
High water mark (pages) = 88
Page size (bytes) = 16384
Extent size (pages) = 4
Prefetch size (pages) = 4
Number of containers = 1
db2pd -db DBNAME -tablespaces
[inst105]# db2pd -db db01 -tablespaces
Database Member 0 -- Database DB01 -- Active -- Up 0 days 00:00:09 -- Date 2021-12-07-23.33.59.387305
Tablespace Configuration:
Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg RSE Name
0x00002AC7BC78FD40 0 DMS Regular 16384 4 Yes 4 1 1 Def 1 0 3 Yes SYSCATSPACE
0x00002AC7BC79CEE0 1 SMS SysTmp 16384 32 Yes 32 1 1 On 1 0 31 No TEMPSPACE1
0x00002AC7BC7AA080 2 DMS Large 16384 32 Yes 32 1 1 Def 1 0 31 Yes USERSPACE1
0x00002AC7BC7B7220 3 DMS Large 16384 4 Yes 4 1 1 Def 1 0 3 Yes SYSTOOLSPACE
Tablespace Statistics:
Address Id TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM Max HWM State MinRecTime NQuiescers PathsDropped TrackmodState
0x00002AC7BC78FD40 0 10240 10236 9612 0 624 9612 9612 0x00000000 0 0 No n/a
0x00002AC7BC79CEE0 1 1 1 1 0 0 - - 0x00000000 0 0 No n/a
0x00002AC7BC7AA080 2 2048 2016 224 0 1792 288 288 0x00000000 0 0 No n/a
0x00002AC7BC7B7220 3 2048 2044 88 0 1956 88 88 0x00000000 0 0 No n/a
Tablespace Autoresize Statistics:
Address Id AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x00002AC7BC78FD40 0 Yes Yes 33554432 -1 No None None No
0x00002AC7BC79CEE0 1 Yes No 0 0 No 0 None No
0x00002AC7BC7AA080 2 Yes Yes 33554432 -1 No None None No
0x00002AC7BC7B7220 3 Yes Yes 33554432 -1 No None None No
Tablespace Storage Statistics:
Address Id DataTag Rebalance SGID SourceSGID
0x00002AC7BC78FD40 0 0 No 0 -
0x00002AC7BC79CEE0 1 0 No 0 -
0x00002AC7BC7AA080 2 -1 No 0 -
0x00002AC7BC7B7220 3 -1 No 0 -
Containers:
Address TspId ContainNum Type TotalPgs UseablePgs PathID StripeSet Container
0x00002AC7BC7898A0 0 0 File 10240 10236 0 0 /home/inst105/inst105/NODE0000/DB01/T0000000/C0000000.CAT
0x00002AC7BC7C5000 1 0 Path 1 1 0 0 /home/inst105/inst105/NODE0000/DB01/T0000001/C0000000.TMP
0x00002AC7B7134C00 2 0 File 2048 2016 0 0 /home/inst105/inst105/NODE0000/DB01/T0000002/C0000000.LRG
0x00002AC7BC76A8C0 3 0 File 2048 2044 0 0 /home/inst105/inst105/NODE0000/DB01/T0000003/C0000000.LRG
使用系統視圖查看
[inst105]# db2 "
> select
> substr(TBSP_NAME,1,18) as TBSP_NAME,
> TBSP_TYPE,
> substr(TBSP_STATE,1,10) as TBSP_STATE,
> substr(TBSP_TOTAL_SIZE_KB,1,15) as TOTAL_KB,
> substr(TBSP_USABLE_SIZE_KB,1,15) as USABLE_KB,
> substr(TBSP_USED_SIZE_KB,1,15) as USED_KB,
> TBSP_UTILIZATION_PERCENT||'%' as PERCENT,
> TBSP_AUTO_RESIZE_ENABLED
> from SYSIBMADM.TBSP_UTILIZATION
> "
TBSP_NAME TBSP_TYPE TBSP_STATE TOTAL_KB USABLE_KB USED_KB PERCENT TBSP_AUTO_RESIZE_ENABLED
------------------ ---------- ---------- --------------- --------------- --------------- -------- ------------------------
SYSCATSPACE DMS NORMAL 163840 163776 153792 93.90% 1
TEMPSPACE1 SMS NORMAL 16 16 16 100.00% -
USERSPACE1 DMS NORMAL 32768 32256 3584 11.11% 1
SYSTOOLSPACE DMS NORMAL 32768 32704 1408 4.30% 1
TBSP_AUTO_RESIZE_ENABLED值:
- 1:表示表空間是DMS自動擴展表空間。
- -:表示表空間為SMS類型表空間由文件系統管理。
- 0:表示表空間是DMS非自動擴展表空間。
3.2 表空間狀態
常見的表空間狀態:
狀態 |
解釋 |
0x1 |
停頓:SHARE |
0x2 |
停頓:UPDATE |
0x4 |
停頓:EXCLUSIVE |
0x8 |
裝入暫掛 |
0x10 |
刪除暫掛 |
0x20 |
備份暫掛 |
0x40 |
正在前滾 |
0x80 |
前滾暫掛 |
0x100 |
復原暫掛 |
0x100 |
恢復暫掛(未使用) |
0x200 |
禁用暫掛 |
0x400 |
正在重組 |
0x800 |
正在備份 |
0x1000 |
必須定義存儲器 |
0x2000 |
正在復原 |
0x4000 |
脫機並且不可訪問 |
0x8000 |
刪除暫掛 |
0x2000000 |
可以定義存儲器 |
0x4000000 |
存儲器定義處於“最終”狀態 |
0x8000000 |
在前滾之前已更改存儲器定義 |
0x10000000 |
DMS 重新平衡程序處於活動狀態 |
0x20000000 |
正在進行 TBS 刪除 |
0x40000000 |
正在進行 TBS 創建 |
表空間狀態解析:
[db2inst1]# db2tbst 0x2000
State = Restore in Progress
4 表空間管理
注意:
SMS、自動存儲器表空間均不需要人工介入擴容,以下是基於DMS類型表空間擴容。
擴容某表空間所有容器
db2 “alter tablspace TBS_NAME extend (all,1000)”
縮容某表空間容器(不建議)
db2 “alter tablespace TBS_NAME reduce (file 'filename' size)”
提示:size是要縮容的值。
容器為LVM擴容
db2 “alter tablespace TBS_NAME resize (device '/dev/rLVM' pages)”
提示:pages為增長后的頁數。
容器為file擴容
db2 “alter tablespace TBS_NAME extend (file 'path' size)”
刪除表空間某個容器
db2 “alter tablespace TBS_NMAE drop (file 'path',device '/dev/rdisk1')”
切換offline表空間為online
db2 “alter tablespace TBS_NAME switch online”
轉換常規表空間為大型表空間
db2 “alter tablespace TBS_NAME convert to large”
提示:
將常規表空間轉換為large表空間后,需要將表空間內表的索引重建或者對表進行離線reorg,要不然往表中插入數據可能會報錯SQL1236N、SQL1237W。
重命名表空間
db2 “rename tablespace TBS_NAME to TBS_NAME_NEW”