Oracle - 如何获得特定ROW的实际大小?

dan*_*boh 12 oracle size row

这可能吗?或者至少我希望得到一个表中所有行的大小列表.

bpg*_*rgo 18

select vsize(col1) + vsize(col2) + vsize(col3) + 
long_raw_length_function(long_col) + DBMS_LOB.GETLENGTH(blob_col) 
from table 
where id_col = id_val;
Run Code Online (Sandbox Code Playgroud)

对于long_raw_length_function,请参阅此内容获取LONG RAW的长度

  • 我的错.请参阅此http://stackoverflow.com/questions/5497238/get-the-length-of-a-long-raw/5497260#5497260 (2认同)

Vin*_*rat 8

如果您对平均行长度感兴趣,可以分析表(使用DBMS_STATS包),然后查询ALL_TABLES.avg_row_len.

  • @olexa:似乎`avg_row_len`列考虑了[数据占用的实际空间](https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID :1041629603947).在大多数情况下,它应该大于各列大小总和的平均值,因为列级别的开销很小(例如:NULL值在不在行的末尾时占用空间).当然,如果你使用压缩,它可能会更低. (2认同)