TimesTen記憶體資料庫評估和計算表大小及碎片

tangyunoracle發表於2015-01-25

     在TimesTen記憶體資料庫的規劃階段,我們需要評估記憶體資料庫表佔用記憶體空間的大小,以合理的規劃記憶體資料庫的大小和評估需要遷移到記憶體資料庫的表及欄位;在實際運維過程中,系統上線一定的時間以後,我們需要計算表的大小,甚至需要評估記憶體資料庫表是否存在碎片等。

     TimesTen中分別使用ttsize和ttcomputetabsizes評估和計算表的大小;兩個built的作用不同,ttsize用於儲存規劃時計算需要分配的記憶體空間大小;ttcomputetabsizes用於在專案運維中,詳細計算當前各個表所佔用空間大小。

TimesTen中運維和支援的時候,客戶和開發商經常會問到關於表大小的估算方法,以及在系統執行一段時間後,為什麼進行了表資料的清理,但是空間無法釋放,在11.2.2.x之前的版本,只有使用dsmap的方式才能計算每個表的大小及存在多少空行,從11.2.2版本開始,TimesTen提供了ttComputeTabSizes可以用於計算表的大小及目前有多少空行。

1、ttsize是用於估算表或檢視的大小,包括索引的大小的一個儲存過程。也可以指定要估算的行數和估算的VARBINARY或VARCHAR型別的比例。
使用方法:
ttSize('tblName', [nRows],[frac]);
tblName為要估算的表名;nRows引數預設為當前表的資料量,也可以指定要估算的資料量。frac引數是指定估算的表中每個VARBINARY和VARCHAR型別的估算定義長度的比例(比如varchar(20)的0.5就是假設每行的長度均為10),預設值為0.5,該引數的取值範圍是0~1之間的小數。
e.g:

Command> select count(*) from TY.TANGYUN;
< 200 >
1 row found.
Command> call ttsize('TY.TANGYUN');
< 1273989.00000000 >
Command> call ttsize('TY.TANGYUN',200);
< 1273989.00000000 >
1 row found.
Command> call ttsize('TY.TANGYUN',500);
< 2522277.00000000 >
1 row found.
Command> call ttsize('TY.TANGYUN',200,1);
< 4731589.00000000 >
1 row found.
Command> call ttsize('TY.TANGYUN',200,0.1);
< 1633989.00000000 >
1 row found.

這裡的單位是Byte,計算的大小中已經包括索引的大小。當然,也可以使用ttsize工具:

$ ttsize -tbl ty.tangyun tytt

Rows = 200

Total in-line row bytes = 1273989

Out-of-line columns:

  Column MVIDS                           total        0    avg size      0

  Column CGFKIDS                         total        0    avg size      0

  Column VALTBLIDS                       total        0    avg size      0

  Total out-of-line column bytes = 0

Total = 1273989


2、ttcomputetabsizes是用於計算當前表的大小,該儲存過程是11.2.2的新特性。
使用方法:
ttComputeTabSizes (['tblName'], [includeOutOfLine]);
這裡兩個引數都是可選的,如果不指定表名,那麼就計算所有有許可權訪問的表,包括有許可權訪問的系統表、CacheGroup表、物化檢視表,計算結果儲存更新在DBA_TAB_SIZES,USER_TAB_SIZES或ALL_TAB_SIZES檢視中;includeOutOfLine參數列示是否計算out-of-line的大小,預設值為1表示全部計算,0表示不計算out-of-line的大小。

Command> call ttcomputetabsizes('TY.TANGYUN');

Command> select * from sys.dba_tab_sizes;

  OWNER:                TY

  TABLE_NAME:           TANGYUN

  INLINE_ALLOC_BYTES:   2496576

  NUM_USED_ROWS:        200

  NUM_FREE_ROWS:        312

  AVG_ROW_LEN:          4880

  OUT_OF_LINE_BYTES:    0

  METADATA_BYTES:       2048

  TOTAL_BYTES:          2498624

  LAST_UPDATED:         2014-05-23 03:24:16.000000

1 row found.

Command> call ttcomputetabsizes('TY.TANGYUN',0);

Command> select * from sys.dba_tab_sizes;

  OWNER:                TY

  TABLE_NAME:           TANGYUN

  INLINE_ALLOC_BYTES:   2496576

  NUM_USED_ROWS:        200

  NUM_FREE_ROWS:        312

  AVG_ROW_LEN:         

  OUT_OF_LINE_BYTES:   

  METADATA_BYTES:       2048

  TOTAL_BYTES:         

  LAST_UPDATED:         2014-05-23 03:45:33.000000

1 row found.


---------------End-----------------


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24930246/viewspace-1414308/,如需轉載,請註明出處,否則將追究法律責任。

相關文章