国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

使用REORG TABLE命令優化數據庫的性能

2024-07-21 02:44:10
字體:
來源:轉載
供稿:網友

當數據庫里某個表中的記錄變化量很大時,需要在表上做REORG操作來優化數據庫性能。

值得注意的是,針對數據庫對象的大量操作,如反復地刪除表,存儲過程,會引起系統表中數據的頻繁改變,在這種情況下,也要考慮對系統表進行REORG操作。

 


由于DB2使用CBO作為數據庫的優化器,數據庫對象的狀態信息對數據庫使用合理的access PLAN至關重要。


一個完整的REORG表的過程應該是由下面的步驟組成的:

RUNSTATS -> REORGCHK -> REORG -> RUNSTATS -> BIND或REBIND


0 執行下面命令前要先連接數據庫


1 RUNSTATS

由于在第二步中REORGCHK時可以對指定的表進行RUNSTATS操作(在REORGCHK時指定UPDATE STATISTICS),所以第一步事實上是可以省略的。


2 REORGCHK

REORGCHK命令的語法如下:

>>-REORGCHK----+----------------------------+------------------->

| .-UPDATE--. |

'--+-CURRENT-+---STATISTICS--'


>-----+---------------------------+----------------------------><

| .-USER-------. |

'-ON TABLE--+-SYSTEM-----+--'

+-ALL--------+

'-table-name-'


REORGCHK是根據統計公式計算表是否需要重整。

對于每個表有3個統計公式,對索引有3個統計公式(版本8開始有5個公式),如果公式計算結果該表需重整,在輸出的REORG字段中相應值為*,否則為-。


如果數據庫中數據量比較大,在生產系統上要考慮REORGCHK的執行時間可能較長,需安排在非交易時間執行。


可以分為對系統表和用戶表兩部分分別進行REORGCHK:


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 ....

 

表統計信息:


F1: 100 * OVERFLOW / CARD < 5

F2: 100 * (Effective Space Utilization of Data Pages) > 70

F3: 100 * (Required Pages / Total Pages) > 80


SCHEMA NAME CARD OV NP FP ACTBLK TSIZE F1 F2 F3 REORG

----------------------------------------------------------------------------------------

DB2INST1 STAFF - - - - - - - - -*-

...


索引統計信息:


F4: CLUSTERRATIO 或正常化的 CLUSTERFACTOR > 80

F5: 100 * (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) / ((NLEAF - NUM EMPTY LEAFS) * INDEXPAGESIZE) > 50

F6: (100 - PCTFREE) * ((INDEXPAGESIZE - 96) / (ISIZE + 12)) ** (NLEVELS - 2) * (INDEXPAGESIZE - 96) / (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) < 100

F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20

F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20


SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG

-------------------------------------------------------------------------------------------------

表:DB2INST1.STAFF

DB2INST1 ISTAFF - - - - - - - - - - - - -----

...


從上面的例子來看,對于表DB2INST1.STAFF,根據統計公式F2計算結果,有必要對表進行REORG。

 


3 REORG TABLE

REORG TABLE命令的語法如下:

>>-REORG TABLE--table-name----+--------------------+------------>

'-INDEX--index-name--'


>-----+-----------------------+--------------------------------><

'-USE--tablespace-name--'


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


1) 如果表上有索引

如表名為DB2INST1.STAFF,索引名為DB2INST1.ISTAFF,命令如下:

db2 reorg table db2inst1.staff index db2inst1.istaff use tempspace1


建議REORG時使用USE參數指定數據重排時使用的臨時表空間,否則,REORG工作將會在表所在表空間中原地執行。

如果表上有多個索引,INDEX參數值請使用最為重要的索引名。


2) 如果表上沒有索引

如表名為DB2INST1.STAFF, SYSIBM.SYSTABLES

db2 reorg table db2inst1.staff use tempspace1

db2 reorg table sysibm.systables use tempspace1


4 RUNSTATS

RUNSTATS命令的語法如下:

>>-RUNSTATS ON TABLE--table-name-------------------------------->


>-----+-+--------------------------------------------------------------------+-+>

| '-WITH DISTRIBUTION--+--------------------------------------------+--' |

| '-AND--+----------+--+-INDEXES ALL--------+--' |

| '-DETAILED-' '-INDEX--index-name--' |

'-+--------------------------------------------------+-------------------'

'--+-AND-+---+----------+--+-INDEXES ALL--------+--'

'-FOR-' '-DETAILED-' '-INDEX--index-name--'


>-----+--------------------------+-----------------------------><

| .-CHANGE----. |

'-SHRLEVEL--+-REFERENCE-+--'

 

如果表名為DB2INST1.STAFF,表上有索引,則可以用下面的例子完成RUNSTATS命令:

db2 runstats on table db2inst1.staff with distribution and detailed indexes all


5 (可選) 上面命令完成后可以重復第二步,檢查REORG的結果,如果需要,可以再次執行REORG和RUNSTATS命令。


6 BIND或REBIND

RUNSTATS命令運行后,應對數據庫中的PACKAGE進行重新聯編,簡單地,可以使用db2rbind命令來完成。


db2rbind命令的語法如下:

>>-db2rbind--database--/l logfile----+------+------------------->

'-all--'


.-conservative--.

>-----+-------------------------+--/r--+-any-----------+-------><

'-/u userid--/p passWord--'

 

例如,如果數據庫名為SAMPLE,執行:

db2rbind sample -l db2rbind.out


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济南市| 古田县| 榕江县| 平果县| 开封县| 伽师县| 嘉禾县| 临漳县| 沁阳市| 德阳市| 镇原县| 志丹县| 八宿县| 独山县| 连平县| 浠水县| 吉水县| 神池县| 娱乐| 榆社县| 博野县| 钟祥市| 乌兰浩特市| 双城市| 蒲江县| 兴和县| 台中市| 宣化县| 军事| 延寿县| 财经| 甘孜县| 阆中市| 盐山县| 察雅县| 灯塔市| 光山县| 南皮县| 北票市| 克什克腾旗| 汉源县|