您的位置:首页 > 数据库

TimesTen内存数据库评估和计算表大小及碎片

2016-04-21 00:04 302 查看
 TimesTen内存数据库评估和计算表大小及碎片

 在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-----------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  内存数据库 优化