본문 바로가기

통계정보5

히스토그램(Histogram) (아래 출처의 글을 번역하고 테스트하여 정리한 것입니다.) 출처 : https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/histograms.html#GUID-FFA0C0AF-3761-4829-995E-9AFA524F96CE 히스토그램 히스토그램은 테이블 열의 데이터 분포에 대한 더 자세한 정보를 제공하는 특수한 유형의 컬럼 통계입니다. "버킷"이라고 부르는 공간에 정렬된 값들을 넣습니다. NDV(Number of distinct values)와 데이터의 분포에 따라 데이터베이스는 히스토그램의 유형을 선택하게 됩니다. (경우에 따라 히스토그램을 생성할때 내부적으로 미리 지정된 수의 행을 샘플링하기도 합니다.) 유형은 아래와 같습니다. F.. 2024. 1. 4.
같은 SQLID 다른 PLAN (Histogram 차이) 운영 중에 일어나 해결한 것을 정리하였습니다. 바인드변수만 다르게 해서 동일한 SQLID로 수행되는 쿼리가 특정 바인드변수가 들어오면 끝나지 않고 오래걸리는 현상이 발생하였습니다. 확인해보니 오래걸릴 때에는 실행계획이 달라졌고, SQLID는 동일했었습니다. 해결으로는 해당 SQLID에 대해서는 무조건 같은 실행계획을 타게 profile을 이용하여 고정시켜줬고, 오래걸리는 쿼리도 빠르게 끝나게 되었습니다. 처리 후에 SQLID가 같은데 실행계획이 다르게 나오는 경우는 어떤경우인지 테스트를 통해 정리해보도록 하겠습니다. 시나리오 참고 : https://aprakash.wordpress.com/2011/02/07/same-sql_id-with-different-execution-plans/ Cursor_sha.. 2023. 12. 22.
통계정보 restore 하기 통계정보를 restore하는 방법입니다. 먼저 통계정보가 보관되는 기간확인하는 쿼리입니다. SQL> select dbms_stats.get_stats_history_retention from dual; GET_STATS_HISTORY_RETENTION ------------------------------------------------------ 31 1 rows selected. 해당 테이블의 통계정보관련 update된 시간을 보여주는 테이블입니다. SQL> select * from dba_Tab_stats_history where table_name='테이블명'; OWNER TABLE_NAME PARTITION_NAME SUBPARTITION_NAME STATS_UPDATE_TIME --------.. 2023. 10. 5.
통계정보 관련 딕셔너리 뷰 1. dba_tab_stats_history 해당 뷰는 dba가 액세스할 수 있는 모든 테이블에 대한 테이블 통계 수정 내역(history)을 제공합니다. 해당 테이블에 대해서 통계정보에 대한 수정사항이 있다면 이력이 남게 됩니다. OWNERTABLE_NAMEPARTITION_NAMESUBPARTITION_NAMESTATS_UPDATE_TIME SYSWRH$_SEG_STATWRH$_SEG_STAT_1627335910_21822021/11/10 22:04:46.147679 +09:00 SYSWRH$_SEG_STATWRH$_SEG_STAT_1627335910_22162021/11/10 22:04:45.480635 +09:00 SYSWRH$_SEG_STATWRH$_SEG_STAT_1627335910_22892.. 2021. 11. 11.