DB2 runstats、reorgchk、reorg 命令


runstats、reorgchk、reorg

 

1、runstats

runsats可以搜集表的信息,也可以搜集索引信息。作為runstats本身沒有優化的功能,但是它更新了統計信息以后,可以讓DB2優化器使用最新的統計信息來進行優化,這樣優化的效果更好。

 

runstats   on   table   <tbschema>.<tbname>   收集表   <tbname>   的統計信息。表名必須是用  <dbschema>   全限定的。

 

 

  2、reorg

 

 A、 reorg   table   <tbschema>.<tablename>   通過重構行來消除“碎片”數據並壓縮信息,對表進行重組。表名必須是用   <dbschema>   全限定的。

  B、

reorg還有一個功能就是可以將表中的數據按照某個索引關鍵字的順序排列,從而可以減少某些查詢I/O的數量。

 

 

  執行REORG可以考慮分為表上有索引和沒有索引兩種情況: 

     a.如表名為DB2INST1.STAFF,索引名為DB2INST1.ISTAFF

      reorg table db2inst1.staff index db2inst1.istaff use tempspace1

    b.建議REORG時使用USE參數指定數據重排時使用的臨時表空間,否則,REORG工作將會

       在表所在表空間中原地執行.如果表上有多個索引,INDEX參數值請使用最為重要的索

       引名.

    c.表上沒有索引:

       reorg table db2inst1.staff use tempspace1

      reorg table sysibm.systables use tempspace1

 

http://weiruan85.javaeye.com/blog/317520

 

3、

 

讓db2系統定時runstats、reorg

Q:定期runstats、reorg

A:在db2 v8.2以上可以使用 CALL SYSPROC.ADMIN_CMD來實現,

這里主要講在v8.2以前的版本中利用shell或者批處理來實現同樣的功能

因為在以前的版本中存儲過程中是不能使用DDL操作語句的!(這點對於oracle剛轉過來的人來說很是郁悶的)

然后可以利用db2自帶的配置自動維護來做,但是java做的東西比較讓人感覺頭痛!尤其是速度和莫名的錯誤!

本代碼使用操作系統的腳本來實現這部分功能!

1.windows下

如下:

下一個cmd文件s.cmd

內容如下:

db2 connect to ccp_dm

db2 -x "select 'runstats on table '||rtrim(tabschema)||'.'||tabname||' on all columns' from sysstat.tables where card=-1">tab.sql

db2 -f tab.sql

--其中where后的條件可以修改

然后就是定制任務:用windos的定制任務!每周或者每月運行,這個就不講了哈!

這部分經測試,通過!

不過能,這里只提到了runstats,對於reorg同理也可以實現!

 

http://myfriend2010.itpub.net/post/29012/386779

 

 

4、reorgchk

 

C:\Documents and Settings\Administrator>db2 reorgchk update statistics on table all

 

正在執行 RUNSTATS ....

 

  reorgchk   on   table   all   確定是否需要對表進行重組。這對於對所有表自動執行 runstats很有用。   

 

 

1) 針對系統表進行REORGCHK

db2 reorgchk update statistics on table system

使用UPDATE STATISTICS參數指定數據庫首先執行RUNSTATS命令。

 

2) 針對用戶表進行REORGCHK

db2 reorgchk update statistics on table user

 

下面是執行的部分結果

db2 reorgchk update statistics on table user

執行 RUNSTATS ....

 

 

db2 reorgchk 命令是最重要的、也是經常被忽略的 DB2 調整命令之一。 db2 reorgchk 命令被忽略是因為它不是一個一次性調整項。由於更新是在 DB2 數據庫上執行的,因此關於表的統計信息將不會是最新的。db2 reorgchk 命令更新 DB2 優化器所使用的重要統計信息。建議在大約每 10,000 次更新后重復 db2 reorgchk 命令。

 

在運行 db2 reorgchk 命令之前,您應該停止 IBM Directory Server 以防止在命令執行的同時發生任何 DB2 查詢或更新。雖然這是可選的,但數據庫查詢和更新可能會非常緩慢並有可能超時。

 

 

 

請注意,運行 db2 reorgchk 命令所帶來的性能益處是即時的。不必在 db2 reorgchk 命令之后重新啟動 DB2。

 

除了提高性能之外,db2 reorgchk 命令還報告關於數據庫中所有表和索引的統計信息。db2 reorgchk 命令還報告關於 DB2 表的組織的統計信息。

 

http://publib.boulder.ibm.com/tividd/td/ITAME/SC32-1351-00/zh_CN/HTML/am51_perftune66.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM