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

首頁 > 學院 > 開發設計 > 正文

Oracle 11g表的碎片率診斷

2019-11-09 13:33:40
字體:
來源:轉載
供稿:網友

 在Oracle中,有些表由于頻繁的插入和刪除數據,導致高水位過高,表的碎片也很高,如何判斷呢?

drop table test purge;

create table test as select * from dba_objects;insert into test select * from test;insert into test select * from test;commit;select trunc(real_size('TEST')/1024/1024, 2) real_size,       bytes /1024/1024||'M' seg_size,       trunc((1 - real_size('TEST')/ bytes) * 100, 2) || '%' frag_ratio  from user_segments s where s.segment_name='TEST'; REAL_SIZE SEG_SIZE    FRAG_RATIO---------- ----------- -------------      32.8 33M         .58%      select object_type, count(1)  from test group by object_type having count(1) >5000 order by count(1) desc;      OBJECT_TYPE           COUNT(1)------------------- ----------SYNONYM                 111492java CLASS               91668VIEW                     20656INDEX                    15604TABLE                    11580TYPE                     11292PACKAGE                   5632PACKAGE BODY              5344--可以看到隨著數據的不斷刪除,碎片率在升高delete from test where object_type in('SYNONYM','JAVA CLASS');commit;select trunc(real_size('TEST')/1024/1024, 2) real_size,       bytes /1024/1024||'M' seg_size,       trunc((1 - real_size('TEST')/ bytes) * 100, 2) || '%' frag_ratio  from user_segments s where s.segment_name='TEST'; REAL_SIZE SEG_SIZE    FRAG_RATIO---------- ----------- -------------      12     33M         63.62%delete from test where object_type in('VIEW','INDEX','TABLE','TYPE');commit;select trunc(real_size('TEST')/1024/1024, 2) real_size,       bytes /1024/1024||'M' seg_size,       trunc((1 - real_size('TEST')/ bytes) * 100, 2) || '%' frag_ratio  from user_segments s where s.segment_name='TEST'; REAL_SIZE SEG_SIZE    FRAG_RATIO---------- ----------- -------------

      6.59     33M         80.02%  

--把表收縮一下,碎片率下降了

alter table test enable row movement;alter table test shrink space;select trunc(real_size('TEST')/1024/1024, 2) real_size,       bytes /1024/1024||'M' seg_size,       trunc((1 - real_size('TEST')/ bytes) * 100, 2) || '%' frag_ratio  from user_segments s where s.segment_name='TEST'; REAL_SIZE SEG_SIZE    FRAG_RATIO---------- ----------- -------------     3.2     3.25M      1.53%

附錄是Tom kyte提供的檢查腳本:

CREATE OR REPLACE FUNCTION REAL_SIZE(P_SEGNAME IN VARCHAR2,P_OWNER IN VARCHAR2 DEFAULT USER,P_TYPE IN VARCHAR2 DEFAULT 'TABLE')RETURN NUMBER AUTHID CURRENT_USER ASL_TOTAL_BLOCKS NUMBER;L_TOTAL_BYTES NUMBER;L_UNUSED_BLOCKS NUMBER;L_UNUSED_BYTES NUMBER;L_LASTUSEDEXTFILEID NUMBER;L_LASTUSEDEXTBLOCKID NUMBER;L_LAST_USED_BLOCK NUMBER;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;T_TOTAL_BYTES NUMBER;T_FS_BYTES NUMBER;P_PART_NAME VARCHAR2(30);BEGINDBMS_SPACE.SPACE_USAGE(P_OWNER,P_SEGNAME,P_TYPE,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,P_PART_NAME);DBMS_SPACE.UNUSED_SPACE(P_OWNER,P_SEGNAME,P_TYPE,L_TOTAL_BLOCKS,L_TOTAL_BYTES,L_UNUSED_BLOCKS,L_UNUSED_BYTES,L_LASTUSEDEXTFILEID,L_LASTUSEDEXTBLOCKID,L_LAST_USED_BLOCK,P_PART_NAME);T_FS_BYTES := L_FS1_BYTES * 0.25 / 2 + L_FS2_BYTES * (0.5 + 0.25) / 2 +L_FS3_BYTES * (0.75 + 0.5) / 2 +L_FS4_BYTES * (1 + 0.75) / 2 + L_UNUSED_BYTES;T_TOTAL_BYTES := L_TOTAL_BYTES;RETURN T_TOTAL_BYTES-T_FS_BYTES;EXCEPTIONWHEN OTHERS THENRETURN 1;END;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 突泉县| 西安市| 雷山县| 山阳县| 灵台县| 沂水县| 淅川县| 平泉县| 霍邱县| 化隆| 霍州市| 东阿县| 五原县| 阿克| 大港区| 平塘县| 治多县| 泽库县| 兴安县| 新丰县| 横山县| 和林格尔县| 肃宁县| 彭阳县| 杭锦后旗| 恭城| 如东县| 惠安县| 鄂伦春自治旗| 霍城县| 易门县| 苏尼特左旗| 栾城县| 平果县| 北安市| 洛隆县| 河间市| 泽库县| 南溪县| 龙陵县| 莆田市|