oracle – 为什么我的表格大小比avg_row_len的预期大10倍?
发布时间:2020-12-12 16:24:59 所属栏目:百科 来源:网络整理
导读:在我的Oracle数据库中,我有一个大小为3.44 GB的表.它是1784486行,450146,对应于8 kB块大小,每块平均4行,或每行2 kB.但AVG_ROW_LEN只有369个字节.造成这种差异的原因是什么? 更多细节: PCT_FREE只有10个,所以不应该负责.压缩目前已关闭.表格布局是(列名称一
在我的Oracle数据库中,我有一个大小为3.44 GB的表.它是1784486行,450146,对应于8 kB块大小,每块平均4行,或每行2 kB.但AVG_ROW_LEN只有369个字节.造成这种差异的原因是什么?
更多细节: PCT_FREE只有10个,所以不应该负责.压缩目前已关闭.表格布局是(列名称一般化) KEY NUMBER(38) NOT NULL,DATE1 DATE NOT NULL,DATE2 DATE NOT NULL,POINT NUMBER(4) NOT NULL,NAME VARCHAR2(200 BYTE) NOT NULL,BLOB_SIZE NUMBER(38) NOT NULL,BLOB_TYPE VARCHAR2(8 BYTE) NOT NULL,BLOB_FILTERS VARCHAR2(64 BYTE) NOT NULL,BLOB_DATA BLOB NOT NULL,PRECOMPUTED RAW(2000) -- currently no more than ~200 bytes -- (15 doubles,plus some headers)好.让我们首先弄清楚TOAD在哪里得到你正在看的数字 是什么 SELECT sum(bytes)/1024/1024/1024 size_in_gb,sum(blocks) size_in_blocks FROM dba_segments WHERE owner = <<owner of table>> AND segment_name = <<name of table>> 返回表的大小? 是什么 SELECT num_rows,blocks,empty_blocks,avg_row_len,last_analyzed FROM all_tables WHERE owner = <<owner of table>> AND table_name = <<name of table>> 返回桌子上的统计数据? 是什么 SELECT COUNT(*) FROM <<owner of table>>.<<name of table>> 返回表中的实际行数? 是什么 DECLARE l_unformatted_blocks number; l_unformatted_bytes number; l_fs1_blocks number; l_fs1_bytes number; l_fs2_blocks number; l_fs2_bytes number; l_fs3_blocks number; l_fs3_bytes number; l_fs4_blocks number; l_fs4_bytes number; l_full_blocks number; l_full_bytes number; BEGIN dbms_space.space_usage (<<table owner>>,<<table name>>,'TABLE',l_unformatted_blocks,l_unformatted_bytes,l_fs1_blocks,l_fs1_bytes,l_fs2_blocks,l_fs2_bytes,l_fs3_blocks,l_fs3_bytes,l_fs4_blocks,l_fs4_bytes,l_full_blocks,l_full_bytes); dbms_output.put_line('Unformatted Blocks = '||l_unformatted_blocks); dbms_output.put_line('FS1 Blocks = '||l_fs1_blocks); dbms_output.put_line('FS2 Blocks = '||l_fs2_blocks); dbms_output.put_line('FS3 Blocks = '||l_fs3_blocks); dbms_output.put_line('FS4 Blocks = '||l_fs4_blocks); dbms_output.put_line('Full Blocks = '||l_full_blocks); END; 显示如何使用表中的块? 这些行是在1月14日14:02:29之后更新的吗?特别是,是否有可能插入相对较小的行但随后更新为更大的行?如果您在表上重新收集统计信息,是否会发生任何变化 BEGIN dbms_stats.gather_table_stats( ownname => <<owner of table>>,tabname => <<name of table>>,estimate_percent => null,granularity => 'ALL' ); END; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |