新聞中心
DB2數(shù)據(jù)庫在實(shí)際使用中經(jīng)常需要進(jìn)行備份和還原操作,以保證數(shù)據(jù)的安全性和可靠性。然而,在經(jīng)過還原操作后,有時會出現(xiàn)數(shù)據(jù)庫占用空間顯著增大的情況。這種情況對于數(shù)據(jù)庫管理員來說是一項令人頭疼的問題,因為過大的占用空間會影響系統(tǒng)性能,增加存儲開銷。下面將介紹,以幫助管理員更好解決該問題。

專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站設(shè)計服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)桓臺免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1. 數(shù)據(jù)庫清理
在DB2數(shù)據(jù)庫還原后,數(shù)據(jù)庫中會出現(xiàn)一些不必要的數(shù)據(jù),如結(jié)構(gòu)重建信息、臨時文件、未提交的事務(wù)等。這些不必要的數(shù)據(jù)會占用較多的空間,因此對于這些數(shù)據(jù)的清理非常重要。管理員可以通過以下命令對數(shù)據(jù)庫進(jìn)行清理操作。
管理員需要連接到數(shù)據(jù)庫中,執(zhí)行如下命令,獲取需要清理的表:
db2 “select TABNAME from SYSCAT.TABLES where TABSCHEMA=””
其中,“表示Schema名稱,即要清理的表所在的Schema名。
接著,將表的所有數(shù)據(jù)全部刪除:
db2 “delete from
其中,`
2. 重新組織表空間
在DB2數(shù)據(jù)庫的使用過程中,表空間中的數(shù)據(jù)會出現(xiàn)不均勻分布的情況。這是由于表空間的存儲規(guī)則和數(shù)據(jù)類型、數(shù)量等情況有關(guān)。因此,重新組織表空間是解決數(shù)據(jù)庫還原后占用空間過大的一個非常有效的方法。
管理員需要查詢表空間的使用情況,通過以下命令可以獲取表空間使用情況:
db2 “select TBSP_NAME, FILE_NAME, TOTAL_PAGES, FREE_PAGES, USED_PAGES, PCT_PAGES_USED from SYSCAT.TABLESPACES”
其中,`SYSCAT.TABLESPACES`為系統(tǒng)提供的元數(shù)據(jù)表,用于存儲表空間的相關(guān)信息。
接著,管理員可以通過下面的命令,對表空間進(jìn)行重新組織:
db2 “ALTER TABLESPACE REORG LOB()”
3. 壓縮數(shù)據(jù)庫
在DB2數(shù)據(jù)庫還原后,由于數(shù)據(jù)量的增加和刪除,數(shù)據(jù)文件容易發(fā)生碎片化。這時管理員可以通過壓縮數(shù)據(jù)庫的方式來重新整理碎片化的數(shù)據(jù)文件,緩解數(shù)據(jù)庫占用空間過大的問題。
管理員需要連接到數(shù)據(jù)庫中,并開啟壓縮功能,執(zhí)行下面的命令:
db2 “CONNECT TO USER USING “
其中,“為需要壓縮的數(shù)據(jù)庫名稱,“和“為管理員所用的數(shù)據(jù)庫賬戶信息。
db2 “REORG TABLESPACE “
4. 調(diào)整數(shù)據(jù)庫參數(shù)
在進(jìn)行數(shù)據(jù)庫還原操作時,管理員也需要考慮到數(shù)據(jù)庫參數(shù)的設(shè)置,因為一些參數(shù)設(shè)置不合理也可能導(dǎo)致數(shù)據(jù)庫空間占用過大的情況。管理員可以通過以下命令進(jìn)行查詢:
db2 “SELECT NAME, VALUE from SYSIBMADM.DBMCFG”
其中,`SYSIBMADM.DBMCFG`為系統(tǒng)提供的元數(shù)據(jù)表,用于存儲數(shù)據(jù)庫管理器的配置信息。
管理員需要注意,不同的數(shù)據(jù)庫版本可能有不同的配置參數(shù),因此需要根據(jù)實(shí)際情況進(jìn)行調(diào)整。
Conclusion
相關(guān)問題拓展閱讀:
- DB2 刪除表后如何釋放相應(yīng)磁盤空間
- 數(shù)據(jù)庫文件占用C盤空間越來越大
DB2 刪除表后如何釋放相應(yīng)磁盤空間
db2的表 是存放在表空間里的,刪除表畝漏就不會增加磁盤空間,而要要修改表空間,表空間迅亂爛又有一個或陪判多個容器。如果你只是想增加磁盤空間,建議你還是想其他辦法吧。
#說明:由csdn下載,原版為doc格式,有對應(yīng)的xml表,不過還是應(yīng)該對每個服務(wù)的數(shù)據(jù)庫單獨(dú)考慮需要的檢查表格。
DB2維護(hù)手冊
目錄
DB2維護(hù)手冊 1
一、 DB2日常維護(hù)日操作 3
1、 檢查管理服務(wù)器是否啟動 3
2、 檢查DB2實(shí)例是否已經(jīng)啟動 3
3、 查看表空間狀態(tài)是否正常 3
4、 查看表的狀態(tài) 4
5、 查看磁盤空間 4
6、 檢查存儲管理軟件是否正常 4
7、 檢查數(shù)據(jù)庫備份是否正常 5
8、 檢查歸檔日志是否正確歸檔了 5
9、 查看緩沖池的命中率 5
10、 查看當(dāng)前運(yùn)行最頻繁的SQL,其命中率是否正常 5
11、 查看當(dāng)前連接的應(yīng)用程序,有沒有非法連接 5
12、 檢查有沒有死鎖 6
13、 對表和索引進(jìn)行RUNSTATS 6
14、 檢查表是否需要重組 6
15、 對需要重組的表進(jìn)行重組 7
二、 DB2日常維護(hù)月操作 7
1、 查看DB2日志 7
2、 檢查備份和日志是否都保存好了 7
三、 DB2日常維護(hù)季度操作 7
1、 通過快照仿扮監(jiān)控器,查看系統(tǒng)性能如何 7
2、 數(shù)據(jù)庫補(bǔ)丁級別 8
四、 注意事項 8
1、 不要刪除活動日志文件 8
2、 注意交易日志存儲空間 8
3、 按照系統(tǒng)的實(shí)際工作量配置日志空間 8
4、 設(shè)置正確數(shù)據(jù)庫代碼頁 9
5、 檢查許可證(LICENSE)安裝情況 9
6、 創(chuàng)建數(shù)據(jù)庫前調(diào)整好系統(tǒng)時間 9
7、 不要隨便執(zhí)行 CHOWN (CHMOD) –R (UNIX/LINUX) 9
8、 在歸檔日志模式下使用LOAD記得加NONRECOVERABLE參數(shù) 9
五、 附:以脫機(jī)方式重組表 9
六、 附:索引重組 10
七、 附:收集和更新統(tǒng)計信息的準(zhǔn)則 11
八、 附:使用 CLP 捕獲數(shù)據(jù)庫運(yùn)行狀況快照 13
一、 DB2日常維護(hù)日操作
1、 檢查管理服務(wù)器是否啟動
用ps命令查看是否有dasusr1后臺進(jìn)程
#ps -ef | dasusr1
請確保管理服務(wù)器已經(jīng)啟動,如果沒有啟動,則按以下步驟啟動管理服務(wù)器:
? 以管理服務(wù)器用戶(UNIX默認(rèn)是DASUSR1)登錄
? 發(fā)出db2admin start命令
? 如果是HA環(huán)境,則要保證在腳本中正確配置了啟動命令
2、 檢查DB2實(shí)例是否已經(jīng)啟動
用ps命令查看是否有db2sysc后臺進(jìn)程
#ps -ef | db2sysc
也可以以DB2實(shí)例所有者登錄,通過發(fā)出db2start命令來確保啟動了實(shí)例(如果實(shí)例已經(jīng)啟動,則會告知SQL1026N 數(shù)據(jù)庫管理器已激活;否則,將把實(shí)例啟動起來)
3、 查看表空間狀態(tài)是否正常
以db2實(shí)例所有者登錄
#db2 list tablespaces show detail//在單分區(qū)上查看表空間的狀態(tài),正常返回0x0000
# db2_all list tablespaces show detail //在所有分區(qū)上查看表空間的狀態(tài)
可以使用LIST TABLESPACES 命令確定連接數(shù)據(jù)庫中表空間的當(dāng)前狀態(tài),可以使用SHOW DETAIL選項查看表空間的詳細(xì)信息。比如,我們連上SAMPLE數(shù)據(jù)庫,執(zhí)行l(wèi)ist tablespaces show detail ,可以看到狀態(tài)返回值是0x0000,此時,使用db2tbst可以查看狀態(tài)編號對于的狀態(tài)含義,具體語法如下:
db2tbst 可以查看編號所代表茄攔的狀態(tài)
db2tbst 命令接收十六進(jìn)制的狀態(tài)值,并返回相應(yīng)的表空間狀態(tài)。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而該十六進(jìn)制的狀態(tài)值反過來又是 LIST TABLESPACES 命令顫大胡輸出的組成部分。表空間的外部可見狀態(tài)是由單個狀態(tài)值的十六進(jìn)制總和構(gòu)成的。例如,如果表空間的狀態(tài)是 Backup Pending和 Load in Progress,那么所返回的十六進(jìn)制值就是 0x20230(0x00020 + 0x20230)
4、 查看表的狀態(tài)
查詢系統(tǒng)目錄視圖以獲得關(guān)于數(shù)據(jù)庫的有用信息。例如,下面的語句使用 NOT LIKE 斷言,返回在 SYSCAT.TABLES 中有項的所有用戶定義的表的名稱,以及每個表的列數(shù)和表的狀態(tài)(N = 正常;C = 待審核(check pending))
#db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE ‘SYS%’ ORDER BY tabname
也可以使用load query命令查看單個表的狀態(tài),比如對表TEST1,我們可以發(fā)出如下命令:
#db2 load query table test1
5、 查看磁盤空間
查看數(shù)據(jù)庫活動日志目錄是否已滿,活動日志目錄可以使用get db cfg查看,注意一定不要手工刪除活動日志
#df -k
查看S表空間對應(yīng)的容器目錄空間是否滿了
#df -k
查看DMS表空間中是否還有可用頁
#db2 list tablespaces show detail//在單分區(qū)上查看表空間的是否還有可用頁
# db2_all list tablespaces show detail //在所有分區(qū)上查看表空間是否還有可用頁
6、 檢查存儲管理軟件是否正常
請檢查T或其他存儲管理軟件是否正常,以及磁帶機(jī)是否運(yùn)行正常。
7、 檢查數(shù)據(jù)庫備份是否正常
請查看T或第三方存儲管理軟件,看備份映像文件是否完整的保存到了磁帶機(jī)上了,想在DB2上查看備份情況,可以使用LIST命令
# db2 list history backup all for 數(shù)據(jù)庫名
8、 檢查歸檔日志是否正確歸檔了
請確?;顒尤罩灸夸浵聸]有的日志文件都已經(jīng)正確歸檔到了帶機(jī)上(查看T或第三方存儲管理軟件)。
查看活動目錄里的日志文件:
#ls -l
9、 查看緩沖池的命中率
# db2 get snapshot for bufferpools on 數(shù)據(jù)庫名
查看緩沖池的命中率,看其是否低于95%(命中率越高越好)
10、 查看當(dāng)前運(yùn)行最頻繁的SQL,其命中率是否正常
# db2 get snapshot for bufferpools on 數(shù)據(jù)庫名 > log.txt
用grep命令查看” Number of executions”執(zhí)行次數(shù)最頻繁的語句,看其命中率是否正常。
比如:
grep -n ” Number of executions” snap.out | grep -v “= 0” | sort -k 5,5rn | more
11、 查看當(dāng)前連接的應(yīng)用程序,有沒有非法連接
#db2 list applications show detail
看這些連接的情況,看有沒有不合適的IP連上來,或者不被允許的第三方工具連上來,比如一些第三方工具連上來會對表進(jìn)行鎖定,影響業(yè)務(wù)系統(tǒng)正常運(yùn)行,這個時候可以用FORCE APPLICATIONS (應(yīng)用程序句柄)停下來。
12、 檢查有沒有死鎖
# db2 get snapshot for all on 數(shù)據(jù)庫名 > log.txt
用grep命令查看輸出的文件中是否有死鎖的記錄,比如
grep -n “Deadlocks detected” log.txt | grep -v “= 0” | more
13、 對表和索引進(jìn)行runstats
#db2 runstats on table 表名 and index all
對系統(tǒng)表以及變化比較頻繁的表運(yùn)行統(tǒng)計信息,建議寫成shell腳本自動運(yùn)行。
14、 檢查表是否需要重組
使用REORGCHK命令,通過統(tǒng)計數(shù)據(jù)檢查表是否需要重組,語法如下:
REORGCHK STATISTICS ON
執(zhí)行完上述命令后,重新執(zhí)行Tablespaces占用空間大小查詢命令,查看空間占用是否有所下降。
其中,“為需要重新組織的表空間名稱,“為LOB數(shù)據(jù)類型列的列名。
執(zhí)行上述命令后,等待表空間的重新組織工作完成。重新組織后,再次查詢表空間的使用情況,可以發(fā)現(xiàn)表空間占用空間有所下降。
db2 “COMMIT;”
接著,管理員可以通過下面的命令,對數(shù)據(jù)庫進(jìn)行壓縮:
其中,“為需要壓縮的表空間名。
執(zhí)行上述命令后,等待數(shù)據(jù)庫壓縮完成。壓縮完成后,再次查詢數(shù)據(jù)庫空間使用情況,可以發(fā)現(xiàn)占用空間有所下降。
CURRENT STATISTICS:根據(jù)當(dāng)前表統(tǒng)計數(shù)據(jù)判斷是否需要重組表
TABLE table_name : 對單個表進(jìn)行分析
TABLE ALL: 對數(shù)據(jù)庫所有的表進(jìn)行分析
TABLE SYSTEM: 對系統(tǒng)表進(jìn)行分析
TABLE USER : 對當(dāng)前用戶模式下的所有表進(jìn)行分析
#db2 reorgchk update statistics on table all
15、 對需要重組的表進(jìn)行重組
#db2 reorg table 表名//通過重構(gòu)行來消除“碎片”數(shù)據(jù)
#db2 reorg indexes all for table 表名 //只重組索引
比如:
reorg table db2inst1.org index by_id
將根據(jù)索引by_id,如果不加INDEX選項將重組表和所有的索引
reorg table db2inst1.org index by_id use tempspace1
使用指定的臨時表空間重組表
表重組完成后需要進(jìn)行RUNSTATS。另外,記住在分區(qū)數(shù)據(jù)庫環(huán)境中,如果想在所有節(jié)點(diǎn)運(yùn)行命令,需要使用db2_all命令。
二、 DB2日常維護(hù)月操作
1、 查看DB2日志
請至少每月查看一次db2diag.log文件,看其中是否有異常。
2、 檢查備份和日志是否都保存好了
通過T或第三方存儲管理軟件,查看備份和歸檔日志是否都保存好了,在數(shù)據(jù)庫級別查看備份,可以使用:
# db2 list history backup all for 數(shù)據(jù)庫名
三、 DB2日常維護(hù)季度操作
1、 通過快照監(jiān)控器,查看系統(tǒng)性能如何
通過快照監(jiān)控器,抓取數(shù)據(jù)庫的信息,分析數(shù)據(jù)庫性能是否合理:
# db2 get snapshot for all on 數(shù)據(jù)庫名 > log.txt
2、 數(shù)據(jù)庫補(bǔ)丁級別
# db2level
四、 注意事項
1、 不要刪除活動日志文件
DB2 的活動日志文件不能被刪除。一旦 DB2 的活動日志文件被刪除,或者所在的存儲設(shè)備出現(xiàn)問題,則不可避免地造成 DB2 數(shù)據(jù)庫系統(tǒng)宕機(jī)。
2、 注意交易日志存儲空間
在歸檔日志模式下,如果沒有使用自動歸檔方式,則存儲的日志文件會不斷增多,有可能造成日志所在的文件系統(tǒng)空間滿。 當(dāng)這種情況發(fā)生時,會根據(jù)參數(shù) BLK_LOG_DSK_FUL 的配置而有不同的現(xiàn)象:
1)如果該參數(shù)啟用,則 DB2 數(shù)據(jù)庫可繼續(xù)讀操作,但是寫操作會掛起
2)如果該參數(shù)沒有啟用,則 DB2 數(shù)據(jù)庫會停止工作
兩種情況下,都需要到日志所在的文件系統(tǒng)添加了空間才恢復(fù)正常。
3、 按照系統(tǒng)的實(shí)際工作量配置日志空間
DB2數(shù)據(jù)庫通過日志文件維護(hù)數(shù)據(jù)的完整性和一致性。DB2 數(shù)據(jù)庫的日志空間可通過如下公式計算:
日志空間 = (主日志文件 + 二級日志文件) * 日志文件尺寸
其中:
1) 主日志文件由參數(shù) LOGPRIMARY 控制,
2) 二級日志文件由參數(shù) LOGSECOND 控制
3) 日志文件尺寸由參數(shù) LOGFILSIZ 控制
4) LOGPRIMARY + LOGSECOND ” 的名為 “” 的已授權(quán)例程
2)數(shù)據(jù)庫日志邏輯錯誤 -> 宕機(jī)
3)常見錯誤 – 只調(diào)整時間,未調(diào)整時區(qū)
7、 不要隨便執(zhí)行 chown (chmod) –R (UNIX/Linux)
在實(shí)例目錄下chown (chmod) -R 會造成
1) 在數(shù)據(jù)庫服務(wù)器上 db2 connect to 能連接上數(shù)據(jù)庫
2) db2 connect to user … using …連接不上
8、 在歸檔日志模式下使用LOAD記得加NONRECOVERABLE參數(shù)
五、 附:以脫機(jī)方式重組表
以脫機(jī)方式重組表是整理表碎片的最快方法。重組可減少表所需的空間量并提高數(shù)據(jù)訪問和查詢性能。
必須具有 SYSADM、SYSCTRL、SYAINT 或 DBADM 權(quán)限,或者必須具有對表的 CONTROL 權(quán)限才能重組表。必須具有數(shù)據(jù)庫連接才能重組表。
標(biāo)識需要重組的表之后,可以對這些表運(yùn)行 REORG 實(shí)用程序,并且可以選擇對在這些表上定義的任何索引運(yùn)行該實(shí)用程序。
1. 要使用 CLP 重組表,請發(fā)出 REORG TABLE 命令:
db2 reorg table test.employee
要使用臨時表空間 mytemp 重組表,請輸入:
db2 reorg table test.employee use mytemp
要重組表并根據(jù)索引 myindex 對行進(jìn)行重新排序,請輸入:
db2 reorg table test.employee index myindex
2. 要使用 SQL 調(diào)用語句重組表,請使用 ADMIN_CMD 過程發(fā)出 REORG TABLE 命令:
call sysproc.admin_cmd (‘reorg table employee index myindex’)
3. 要使用 DB2 管理 API 重組表,請使用 db2REORG API。
在重組表之后,應(yīng)收集有關(guān)表的統(tǒng)計信息,以便優(yōu)化器具有最準(zhǔn)確的數(shù)據(jù)來評估查詢訪問方案。
六、 附:索引重組
通過刪除和插入操作對表進(jìn)行更新后,索引的性能會降低,其表現(xiàn)方式如下:
? 葉子頁分段
葉子頁被分段之后,由于必須讀取更多的葉子頁才能訪存表頁,因此 I/O 操作成本會增加。
? 物理索引頁的順序不再與這些頁上的鍵順序相匹配(此稱為不良集群索引)。
葉子頁出現(xiàn)不良集群情況后,順序預(yù)取操作的效率將降低,因此會導(dǎo)致更多的 I/O 等待。
? 形成的索引大于其最有效的級別數(shù)。
在此情況下應(yīng)重組索引。
如果在創(chuàng)建索引時設(shè)置了 MINPCTUSED 參數(shù),則在刪除某個鍵且可用空間小于指定的百分比時,數(shù)據(jù)庫服務(wù)器會自動合并索引葉子頁。此過程稱為聯(lián)機(jī)索引整理碎片。但是,要復(fù)原索引集群和可用空間以及降低葉級別,請使用下列其中一種方法:
? 刪除并重新創(chuàng)建索引。
? 使用 REORG INDEXES 命令聯(lián)機(jī)重組索引。
因為此方法允許用戶在重建表索引期間對表進(jìn)行讀寫操作,所以在生產(chǎn)環(huán)境中可能需要選擇此方法。
? 使用允許脫機(jī)重組表及其索引的選項運(yùn)行 REORG TABLE 命令。
聯(lián)機(jī)索引重組
在使用 ALLOW WRITE ACCESS 選項運(yùn)行 REORG INDEXES 命令時,如果同時允許對指定的表進(jìn)行讀寫訪問,則會重建該表的所有索引。進(jìn)行重組時,對基礎(chǔ)表所作的任何將會影響到索引的更改都將記錄在 DB2? 日志中。另外,如果有任何內(nèi)部內(nèi)存緩沖區(qū)空間可供使用,則還將這些更改放在這樣的內(nèi)存空間中。重組將處理所記錄的更改以便在重建索引時與當(dāng)前寫活動保持同步更新。內(nèi)部內(nèi)存緩沖區(qū)空間是根據(jù)需要從實(shí)用程序堆中分配的指定內(nèi)存區(qū)域,它用來存儲對正在創(chuàng)建或重組的索引所作的更改。使用內(nèi)存緩沖區(qū)空間使索引重組操作能夠通過這樣的方式來處理更改,即先直接從內(nèi)存讀取,然后讀取日志(如有必要),但讀取日志的時間要晚得多。在重組操作完成后,將釋放所分配的內(nèi)存。重組完成后,重建的索引可能不是更佳集群的索引。如果為索引指定 PCTFREE,則在重組期間,每頁上均會保留相應(yīng)百分比的空間。
對于分區(qū)表,支持對各個索引進(jìn)行聯(lián)機(jī)索引重組和清除。要對各個索引進(jìn)行重組,指定索引名:REORG INDEX index_name for TABLE table_name
對于空間索引或多維集群(MDC)表,不支持采用 ALLOW WRITE 方式的聯(lián)機(jī)索引重組。
注: REORG INDEXES 命令的 CLEANUP ON 選項不能完全重組索引。CLEANUP ON ALL 選項將除去那些標(biāo)記為“刪除”且被認(rèn)為要落實(shí)的鍵。此外,它還將釋放所有標(biāo)記為“刪除”且被認(rèn)為要落實(shí)的鍵所在的頁。在釋放頁后,相鄰的葉子頁將會合并,前提是這樣做可以在合并頁上至少留出 PCTFREE 可用空間。PCTFREE 是指在創(chuàng)建索引時為其定義的可用空間百分比。CLEANUP ON PAGES 選項僅刪除那些標(biāo)記為“刪除”且被認(rèn)為要落實(shí)的所有鍵所在的頁。
使用 CLEANUP ON 選項對分區(qū)表的索引進(jìn)行重組時,支持任何訪問級別。如果未指定 CLEANUP ON 選項,則缺省訪問級別 ALLOW NO ACCESS 是唯一支持的訪問級別。
REORG INDEXES 具有下列要求:
? 對索引和表具有 SYSADM、SYAINT、SYSCTRL 或 DBADM 權(quán)限,或者具有 CONTROL 特權(quán)。
? 用于存儲索引的表空間的可用空間數(shù)量等于索引的當(dāng)前大小
在發(fā)出 CREATE TABLE 語句時,考慮在大型表空間中重組索引。
? 其他日志空間
REORG INDEXES 需要記錄其活動。因此,重組可能會失敗,尤其是在系統(tǒng)繁忙和記錄其他并發(fā)活動時。
注: 如果具有 ALLOW NO ACCESS 選項的 REORG INDEXES ALL 命令運(yùn)行失敗,則會標(biāo)記索引無效并且此項操作不可撤銷。但是,如果具有 ALLOW READ ACCESS 選項的 REORG 命令或具有 ALLOW WRITE ACCESS 選項的 REORG 命令運(yùn)行失敗,則可以復(fù)原原來的索引對象。
七、 附:收集和更新統(tǒng)計信息的準(zhǔn)則
RUNSTATS 命令收集表、索引和統(tǒng)計信息視圖的統(tǒng)計信息,以為優(yōu)化器提供準(zhǔn)確信息進(jìn)行訪問方案選擇。
在下列情況下,使用 RUNSTATS 實(shí)用程序來收集統(tǒng)計信息:
? 當(dāng)數(shù)據(jù)已裝入表中且已創(chuàng)建適當(dāng)?shù)乃饕龝r。
? 當(dāng)在表中創(chuàng)建新的索引時。如果自從上次在表中運(yùn)行 RUNSTATS 以來尚未修改表,則只需要對新的索引執(zhí)行 RUNSTATS。
? 當(dāng)一個表已用 REORG 實(shí)用程序重組時。
? 當(dāng)通過數(shù)據(jù)修改、刪除和插入已大量更新表及其索引時。(此處所指的“大量”可能表示有 10% 到 20% 的表和索引數(shù)據(jù)受影響。)
? 在綁定性能非常重要的應(yīng)用程序之前
? 當(dāng)您想要比較當(dāng)前和先前統(tǒng)計信息時。如果定期更新統(tǒng)計信息,則可以及早發(fā)現(xiàn)性能問題。
? 當(dāng)預(yù)取量更改時。
? 當(dāng)使用了 REDISTRIBUTE DATABASE PARTITION GROUP 實(shí)用程序時。
注:
在先前版本的 DB2? 中,此命令使用了 NODEGROUP 關(guān)鍵字,而不是 DATABASE PARTITION GROUP 關(guān)鍵字。
? 使用 RUNSTATS 實(shí)用程序來收集關(guān)于 XML 列的統(tǒng)計信息。 使用 RUNSTATS 僅收集 XML 列的統(tǒng)計信息時,將保留 LOAD 或上一次執(zhí)行 RUNSTATS 實(shí)用程序已收集的非 XML 列的現(xiàn)有統(tǒng)計信息。如果先前已收集關(guān)于一些 XML 列的統(tǒng)計信息,則在當(dāng)前命令未收集關(guān)于該 XML 列的統(tǒng)計信息時,將刪除先前收集的 XML 列的統(tǒng)計信息;在當(dāng)前命令收集了關(guān)于該 XML 列的統(tǒng)計信息時,將替換先前收集的 XML 列的統(tǒng)計信息。
要提高 RUNSTATS 性能并保存用來存儲統(tǒng)計信息的磁盤空間,考慮僅指定應(yīng)該收集其數(shù)據(jù)分布統(tǒng)計信息的列。
理論上,您應(yīng)在運(yùn)行統(tǒng)計信息之后重新綁定應(yīng)用程序。如果查詢優(yōu)化器具有新的統(tǒng)計信息,則它可以選擇不同的訪問方案。
如果您沒有足夠的時間一次收集全部的統(tǒng)計信息,則可以運(yùn)行 RUNSTATS 來每次僅更新幾個表、索引或統(tǒng)計信息視圖的統(tǒng)計信息,并輪流完成該組對象。如果對選擇性部分更新運(yùn)行 RUNSTATS 期間由于表上的活動而產(chǎn)生了不一致性,則在查詢優(yōu)化期間將發(fā)出警告消息(SQL0437W,原因碼 6)。例如,如果執(zhí)行 RUNSTATS 來收集表分布統(tǒng)計信息,以及在某個表活動后,再次執(zhí)行 RUNSTATS 來收集該表的索引統(tǒng)計信息,則可能發(fā)生這種情況。如果由于表上的活動產(chǎn)生了不一致并且在查詢優(yōu)化期間檢測到這些不一致,則發(fā)出該警告消息。當(dāng)發(fā)生這種情況時,應(yīng)再次運(yùn)行 RUNSTATS 來更新分布統(tǒng)計信息。
要確保索引統(tǒng)計信息和表同步,執(zhí)行 RUNSTATS 來同時收集表和索引統(tǒng)計信息。索引統(tǒng)計信息保留自上次運(yùn)行 RUNSTATS 以來收集的大部分表和列的統(tǒng)計信息。如果自上次收集該表的統(tǒng)計信息以來已對該表做了大量修改,則只收集該表的索引統(tǒng)計信息將使兩組統(tǒng)計信息不能在所有節(jié)點(diǎn)上都同步。
對生產(chǎn)系統(tǒng)調(diào)用 RUNSTATS 可能會對生產(chǎn)工作負(fù)載的性能產(chǎn)生負(fù)面影響。RUNSTATS 實(shí)用程序現(xiàn)在支持調(diào)速選項,在執(zhí)行較高級別的數(shù)據(jù)庫活動期間,可以使用調(diào)速選項來限制執(zhí)行 RUNSTATS 的性能影響。
在分區(qū)數(shù)據(jù)庫環(huán)境中收集表的統(tǒng)計信息時,RUNSTATS 僅收集執(zhí)行該命令的數(shù)據(jù)庫分區(qū)上的表的統(tǒng)計信息。將此數(shù)據(jù)庫分區(qū)的 RUNSTATS 結(jié)果推廣到其他數(shù)據(jù)庫分區(qū)。如果執(zhí)行 RUNSTATS 的數(shù)據(jù)庫分區(qū)不包含特定表的一部分,則將請求發(fā)送到數(shù)據(jù)庫分區(qū)組中包含該表一部分的之一個數(shù)據(jù)庫分區(qū)。
收集統(tǒng)計信息視圖的統(tǒng)計信息時,將收集所有包含該視圖引用的基本表的數(shù)據(jù)庫分區(qū)的統(tǒng)計信息。
考慮以下技巧來提高 RUNSTATS 的效率和已收集的統(tǒng)計信息的有效性:
? 僅對用來連接表的列或 WHERE、GROUP BY 以及查詢的類似子句中的列收集統(tǒng)計信息。如果對這些列建立了索引,則可以用 RUNSTATS 命令的 ON ON KEY COLUMNS 子句指定列。
? 為特定表和表中特定列定制 num_freqvalues 和 num_quantiles 的值。
? 使用 SAMPLE DETAILED 子句收集 DETAILED 索引統(tǒng)計信息,以減少對詳細(xì)的索引統(tǒng)計信息執(zhí)行的后臺計算量。SAMPLE DETAILED 子句減少收集統(tǒng)計信息所需要的時間,并在大多數(shù)情況下產(chǎn)生足夠的精度。
? 當(dāng)創(chuàng)建已填寫的表的索引時,添加 COLLECT STATISTICS 子句來在創(chuàng)建索引時創(chuàng)建統(tǒng)計信息。
? 當(dāng)添加或除去了大量表行時,或如果更新了收集其統(tǒng)計信息的列中的數(shù)據(jù),則再次執(zhí)行 RUNSTATS 來更新統(tǒng)計信息。
? 因為 RUNSTATS 僅收集單個數(shù)據(jù)庫分區(qū)的統(tǒng)計信息,所以,如果數(shù)據(jù)不是在所有數(shù)據(jù)庫分區(qū)中一致分發(fā)的,則統(tǒng)計信息將不太準(zhǔn)確。如果您懷疑存在變形數(shù)據(jù)分發(fā),則您可能想要在執(zhí)行 RUNSTATS 之前使用 REDISTRIBUTE DATABASE PARTITION GROUP 命令來在各數(shù)據(jù)庫分區(qū)之間再分發(fā)數(shù)據(jù)。
八、 附:使用 CLP 捕獲數(shù)據(jù)庫運(yùn)行狀況快照
可從 CLP 使用 GET HEALTH SNAPSHOT 命令來捕獲運(yùn)行狀況快照。該命令語法支持檢索運(yùn)行狀況監(jiān)視器監(jiān)視的不同對象類型的運(yùn)行狀況快照信息。
先決條件
必須具有實(shí)例連接才能捕獲運(yùn)行狀況快照。如果沒有實(shí)例連接,則創(chuàng)建缺省實(shí)例連接。要獲取遠(yuǎn)程實(shí)例的快照,必須先連接至該實(shí)例。
過程
要使用 CLP 捕獲數(shù)據(jù)庫運(yùn)行狀況快照
1. 從 CLP 發(fā)出帶有期望參數(shù)的 GET HEALTH SNAPSHOT 命令。
在以下示例中,將在啟動數(shù)據(jù)庫管理器之后立即捕獲數(shù)據(jù)庫管理器級別運(yùn)行狀況快照。
db2 get health snapshot for dbm
2. 對于分區(qū)數(shù)據(jù)庫系統(tǒng),可為特定分區(qū)捕獲專門的數(shù)據(jù)庫快照,或者為所有分區(qū)捕獲全局的數(shù)據(jù)庫快照。要對特定分區(qū)(如分區(qū)號 2)上的數(shù)據(jù)庫捕獲運(yùn)行狀況快照,請發(fā)出以下命令:
db2 get health snapshot for db on sample at dbpartitionnum 2
要對所有分區(qū)上的所有應(yīng)用程序捕獲數(shù)據(jù)庫快照,請發(fā)出以下命令:
db2 get health snapshot for db on sample global
以下命令捕獲的運(yùn)行狀況快照帶有附加詳細(xì)信息,包括公式、附加信息和運(yùn)行狀況指示器歷史記錄:
db2 get health snapshot for db on sample show detail
3. 對于基于狀態(tài)的運(yùn)行狀況指示器,可對所有對象捕獲數(shù)據(jù)庫快照,而不考慮這些對象的狀態(tài)。常規(guī) GET HEALTH SNAPSHOT FOR DB 命令返回所有對象,這些對象需要針對所有基于狀態(tài)的運(yùn)行狀況指示器的警報。
要對列示了所有對象的數(shù)據(jù)庫捕獲運(yùn)行狀況快照,請發(fā)出以下命令:
db2 get health snapshot for db on sample with full collection
DB2 低一悶好些的版本沒有像SQLSERVER的Shrinkfile或者Oracle的Resize功能。
假如你的DB2是V9.1以上的話可以直接用ALTER TABLESPACE RESIZE收縮表空間,此命令執(zhí)行時它會自動將表進(jìn)行DELETE、RECREATE、IMPORT、EXPORT、REORG或者LOAD等,否則你可以用下面的方法來收縮你的表空間。
1、導(dǎo)出所有表結(jié)構(gòu)和數(shù)據(jù),然后將表虧野重新建立,然后再導(dǎo)入數(shù)據(jù)
2、通過命令 db2dart database-name /LHWM /TSI tablespace-id /NP 0,運(yùn)行此命令后DB2會生成一個文件,文件會有一些建議銷罩喊,告訴你怎么做EXPORT、IMPORT、REORG、LOAD,你按它的步驟一步一步去做,做完之后空間就會自動釋放,然后再用ALTER TABLESPACE的RESIZE功能來收縮表空間。
數(shù)據(jù)庫文件占用C盤空間越來越大
適當(dāng)刪除大型應(yīng)用,你下個新病毒,會給你清理C盤垃圾,有很多東西是緩存。
必須要移走,收縮數(shù)據(jù)庫治標(biāo)不治本,收縮數(shù)據(jù)庫只是多開辟出來的這部分給還給你,一旦使用空間不夠還是會擴(kuò)大的。移動數(shù)前哪哪據(jù)庫文件直接分離–>data和log文件拷貝到目標(biāo)慧碼盤 -> 附加緩豎回去即可。
分離數(shù)據(jù)庫,復(fù)制走,再連接數(shù)據(jù)庫哦
電搜亂腦C盤的appdata文件夾野塵占用了世脊檔那么多空間,知道它有什么作用嗎?
看看是data文件大還是log文件大?
關(guān)于db2數(shù)據(jù)庫還原后占用空間大的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
數(shù)據(jù)庫運(yùn)維技術(shù)服務(wù) ? 如何解決DB2數(shù)據(jù)庫還原后占用空間大的問題 (db2數(shù)據(jù)庫還原后占用空間大)
網(wǎng)站小編 普通
分享到:
相關(guān)推薦
深入理解mysql數(shù)據(jù)庫的注釋功能 (mysql數(shù)據(jù)庫的注釋)
數(shù)據(jù)庫縱向拓展:如何輕松應(yīng)對數(shù)據(jù)量增長? (數(shù)據(jù)庫縱向拓展)
一、 數(shù)據(jù)庫中如何查詢前十?二、 查詢數(shù)據(jù)庫前十條數(shù)據(jù)的方法三、 如何在數(shù)據(jù)庫中搜索前10個結(jié)果四、 數(shù)據(jù)庫查詢:如何快速找到前十條記錄五、 SQL語句:如何選取前十個結(jié)果六、 數(shù)據(jù)庫操作技巧:查詢前 (數(shù)據(jù)庫中如何查詢前十)
輕松教你打造高效數(shù)據(jù)庫assite! (怎么做一個數(shù)據(jù)庫assite)
解決方案:如何找回丟失的MySQL數(shù)據(jù)庫表? (mysql數(shù)據(jù)庫表不見)
考前必讀:數(shù)據(jù)庫二級考試注意事項 (數(shù)據(jù)庫二級考試)
Delphi技術(shù)實(shí)現(xiàn)串口數(shù)據(jù)庫監(jiān)控 (delphi 監(jiān)控串口數(shù)據(jù)庫)
數(shù)據(jù)庫安全問題預(yù)防之道 (如何讓數(shù)據(jù)庫置疑)
隨機(jī)文章
探析數(shù)據(jù)庫內(nèi)存的作用及其重要性 (數(shù)據(jù)庫內(nèi)存作用是什么)
Cydia數(shù)據(jù)庫加載失敗如何解決? (cydia數(shù)據(jù)庫加載失敗)
Win10數(shù)據(jù)庫安裝指南:快速上手安裝教程 (win10 數(shù)據(jù)庫安裝)
微博關(guān)注數(shù)據(jù)庫設(shè)計:簡單方法詳解 (微博關(guān)注 數(shù)據(jù)庫設(shè)計)
數(shù)據(jù)庫表如何自動生成實(shí)體類 (數(shù)據(jù)庫表生成實(shí)體)
Carbon是Apache Druid數(shù)據(jù)庫的一部分 (carbon是那個數(shù)據(jù)庫的)
最近更新
標(biāo)簽
Linux Linux教程 Linux資訊 MacOS MacOS教程 MacOS資訊 MongoDB MongoDB教程 MongoDB資訊 MSSQL MSSQL錯誤 MySQL mysql教程 MySQL維護(hù) MySQL資訊 Neo4j Neo4j教程 Neo4j資訊 ORACLE Oracle優(yōu)化 oracle內(nèi)部視圖 oracle參數(shù) oracle開發(fā) oracle異常修復(fù) oracle故障處理 oracle教程 oracle維護(hù) oracle視圖 ORACLE資訊 oracle遠(yuǎn)程維護(hù) ORA錯誤碼 Redis Redis教程 Redis資訊 SQLServer SQLServer報錯 SQLServer教程 SQLServer資訊 SQL修復(fù) SQL異常 SQL遠(yuǎn)程處理 Windows 技術(shù)文檔 操作系統(tǒng) 數(shù)據(jù)庫
- 登錄
- 注冊
安全登錄
立即注冊 忘記密碼?
UPDATE STATISTICS: 更新表的統(tǒng)計數(shù)據(jù),根據(jù)該統(tǒng)計數(shù)據(jù)判斷是否需要重組表
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站標(biāo)題:如何解決DB2數(shù)據(jù)庫還原后占用空間大的問題(db2數(shù)據(jù)庫還原后占用空間大)
網(wǎng)站地址:http://www.dlmjj.cn/article/dhdiphp.html


咨詢
建站咨詢
