[오라클튜닝, 행이행,체인로우]Chained Row 찾기 및 대처 방법
[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]
chained row를 찾아 이를 관리하는 것은 DBA,의 중요한 부분중 하나 입니다. 오라클은 로우가 확장될때(예르들면 주소 항목을
"서울" 이라고 한 후 나중에 이를 "서울시 강남구 역삼동" 이라고 하는 경우) multiple data block에 체이닝 될수도
있으므로(대부분 하나의 row는 하나의 블럭에 위치하는 것이 좋겠져^^) , 이 경우 결국 검색시 DISK IO를 증가시키게 되어 성능에 좋지
못한 결과를 초래할 수 있습니다.
물론 row chaing은 PCTFREE를 톺게 setting 함으로서 추후 데이터 ROW의 변경되어 사이즈가 커지는 것에 대비할 수도 있겠지만 데이터 TYPE이 RAW or LONG RAW인 경우 row chaing은 어쩔수 없이 발생될수도 있습니다. 왜냐면 한 로우의 사이즈가 블럭 사이즈보다 크면 당연히 다른 블럭에 데이터를 기록해야 겠죠... 그래서 아래 Query에서 RAW 또는 LONG RAW 컬럼은 제외 하였습니다.
물론 아래의 Query를 실행하기전에 ANALYZE 명령을 실행하여 테이블에 대한 통계 정보(chain_cnt and num_rows columns of the DBA_TABLES)를 생성해야 합니다.
아래의 쿼리를 통해 row chaining이 확이되면 Create Table As Select (CTAS) 또는 Oracle export-import utilities를 통해 다시 테이블을 생성시키는 것이 좋습니다.
select
owner "Owner",
table_name "Table",
pct_free "PCTFREE",
pct_used "PCTUSED",
avg_row_len "avg row",
num_rows "Num Rows",
chain_cnt "Chains",
chain_cnt/num_rows Pct
from dba_tables
where owner not in ('SYS','SYSTEM')
and table_name not in
(
select table_name
from dba_tab_columns
where data_type in ('RAW','LONG RAW')
)
and chain_cnt > 0
order by chain_cnt desc
물론 row chaing은 PCTFREE를 톺게 setting 함으로서 추후 데이터 ROW의 변경되어 사이즈가 커지는 것에 대비할 수도 있겠지만 데이터 TYPE이 RAW or LONG RAW인 경우 row chaing은 어쩔수 없이 발생될수도 있습니다. 왜냐면 한 로우의 사이즈가 블럭 사이즈보다 크면 당연히 다른 블럭에 데이터를 기록해야 겠죠... 그래서 아래 Query에서 RAW 또는 LONG RAW 컬럼은 제외 하였습니다.
물론 아래의 Query를 실행하기전에 ANALYZE 명령을 실행하여 테이블에 대한 통계 정보(chain_cnt and num_rows columns of the DBA_TABLES)를 생성해야 합니다.
아래의 쿼리를 통해 row chaining이 확이되면 Create Table As Select (CTAS) 또는 Oracle export-import utilities를 통해 다시 테이블을 생성시키는 것이 좋습니다.
select
owner "Owner",
table_name "Table",
pct_free "PCTFREE",
pct_used "PCTUSED",
avg_row_len "avg row",
num_rows "Num Rows",
chain_cnt "Chains",
chain_cnt/num_rows Pct
from dba_tables
where owner not in ('SYS','SYSTEM')
and table_name not in
(
select table_name
from dba_tab_columns
where data_type in ('RAW','LONG RAW')
)
and chain_cnt > 0
order by chain_cnt desc
오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr)
평일주간(9:30~18:30) 개강
(4/07)[기업100%환급]SQL기초에서 Schema Object까지
(4/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(4/14)C#4.0,ADO.NET,Network 프로그래밍
(4/14)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(4/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
평일야간(19:00~22:00) 개강
(4/07)SQL초보에서실전전문가까지
(4/08)Spring3.X, MyBatis, Hibernate실무과정
(4/10)C#,ASP.NET마스터
(4/10)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(4/14)웹퍼블리싱 마스터
+ (4/22)안드로이드개발자과정
주말(10:00~18:00) 개강
(4/12)웹퍼블리싱 마스터
(4/12)SQL초보에서실전전문가까지
(4/12)안드로이드개발자과정
(4/12)닷넷실무자를위한WPF개발자과정
(4/19)JAVA기초에서실무까지
(4/19)C#,ASP.NET마스터
(4/19)Spring3.X, MyBatis, Hibernate실무과정
평일주간(9:30~18:30) 개강
(4/07)[기업100%환급]SQL기초에서 Schema Object까지
(4/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(4/14)C#4.0,ADO.NET,Network 프로그래밍
(4/14)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(4/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
평일야간(19:00~22:00) 개강
(4/07)SQL초보에서실전전문가까지
(4/08)Spring3.X, MyBatis, Hibernate실무과정
(4/10)C#,ASP.NET마스터
(4/10)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(4/14)웹퍼블리싱 마스터
+ (4/22)안드로이드개발자과정
주말(10:00~18:00) 개강
(4/12)웹퍼블리싱 마스터
(4/12)SQL초보에서실전전문가까지
(4/12)안드로이드개발자과정
(4/12)닷넷실무자를위한WPF개발자과정
(4/19)JAVA기초에서실무까지
(4/19)C#,ASP.NET마스터
(4/19)Spring3.X, MyBatis, Hibernate실무과정
댓글 없음:
댓글 쓰기