[운영 종료] TmaxTibero Tech Blog

티맥스티베로 공식 블로그는 https://tmaxtibero.blog/ 로 이전되었습니다.

티맥스티베로 공식 블로그 이전 자세히보기

튜닝 14

[Tibero] SQL Tuning (14)

Tuning 사례 ​ 5. VIEW MERGING View안의 테이블이 바깥 테이블과 섞이면서 join되어 비효율적 플랜을 푸는 View merging을 통해 옵티마이저는 더욱 다양한 액세스 경로를 대상으로 최적화를 수행할 수 있습니다. ​ ​ EXAMPLE select ... (select b.prjt_nm from project_info B where b.prjt_cd = main.prjt_cd) projectName, ... (select max(reg_date) from ims_comment where issue_id = main.issue_id) lastActDate, ... from IMS_ISSUE_VIEW main, ims_activity ac, tody_product tp where … ..

튜닝 2023.06.14

[Tibero] SQL Tuning (12)

본 문서에서는 상황에 따른 다양한 Tuning 사례를 안내 합니다. ​ ​ Tuning 사례 ​1. WHERE 절 함수 변환 ​​ EXAMPLE SELECT * FROM T WHERE C1 = NVL(?, C1) NVL, JOIN Prediacate로 인해 selectivity 계산이 부정확해집니다. ​ ​ ​1.1. ? = NULL ?가 NULL이면 C1=C1, selectivity는 1 입니다. ? is NULL이면 항상 true 입니다. ​ ​ 1.2. ? is not NULL ?가 NULL이 아니면 C1=? 입니다. ​ ​ Where 절 함수는 'C1=?' 또는 '? is NULL' 로 변경할 수 있습니다. ​ ​ ​ ​ 2.통계 분포가 고르지 못한 경우 ​2.1. 조건문의 Selectivity ..

튜닝 2023.06.13

[Tibero] SQL Tuning (11)

통계정보 ​7. Dynamic sampling (동적 샘플링) Dynamic sampling은 쿼리에 사용된 테이블에 통계정보가 없는 경우, 동적으로 통계정보를 만들어 옵티마이저의 실행계획에 도움을 주는 기능 입니다. ​ Dynamic sampling은 최소한의 시간으로 data block을 샘플링하는 등 일부 데이터를 추출해 통계정보를 수집합니다. ​ ​ 7.1. Table level ​대상 테이블, 파티션 및 컬럼의 통계 정보 ​ 원리 First phase : 16 sample block을 읽습니다. Second phase : 테이블 실제 block 개수에 따라 추가적으로 최대 300개까지 읽습니다. ​ Note! 읽은 sample block의 개수는 'tbevent 28004-28014'를 켜고 추..

튜닝 2023.06.12

[Tibero] SQL Tuning (10)

통계정보 3. 통계정보 수집 DBMS_STATS 패키지 프로시저를 이용해 통계정보를 수집합니다. ​ GATHER_DATABASE_STATS 데이터베이스의 모든 Object에 대한 통계정보를 생성합니다. ​ ​ Example SQL> execute dbms_stats.gather_table_stats('SCOTT', 'EMP'); SQL> exec dbms_stats.gather_table_stats(ownname=>'TIBERO', tabname=>'ACS01', estimate_percent=>100 ); ​ ​ GATHER_SCHEMA_STATS 스키마의 Object에 대한 통계정보를 생성합니다. ​ GATHER_TABLE_STATS 테이블과 관련있는 인덱스에 대한 통계정보를 생성합니다. ​ GATH..

튜닝 2023.06.09

[Tibero] SQL Tuning (9)

본 문서에서는 통계정보 수집 시 필요한 정보 중 Column level의 분포도를 표현하는 히스토그램에 대해 안내 합니다. 통계정보 2. 필요 정보 2.1. 히스토그램 (Histogram) 특정 변수에 대한 구간별 빈도수를 나타내는 도구인 히스토그램은 Column level의 분포도를 표현하는 통계정보 입니다. 히스토그램을 관리함으로써 옵티마이저의 잘못된 실행계획 생성을 방지할 수 있습니다. ​ ​ 2.1.1. 히스토그램 특징 특정값이 집중적으로 분포되어 있을 시 더욱 효율적 입니다. 사용자가 Bucket수를 지정할 수 있습니다. ​ ​ 2.1.2. 히스토그램 종류 ​Height-balanced Histogram Bucket 수보다 변수값이 많은 경우로, Bucket에 한 개 이상의 값들이 분포되어 있을..

튜닝 2023.06.08

[Tibero] SQL Tuning (8)

통계정보 통계정보는 최적의 실행계획 수립을 위해 옵티마이저가 실행계획 작성 시 참조하는 정보 입니다. 옵티마이저의 실행계획 수립에 영향을 미치는 정보이므로, 효율성을 강조하는 비용기반방식 옵티마이저 (Cost Base Optimizer, CBO)에서의 통계정보는 더욱 중요해졌습니다. ​ ​ 1. 통계정보의 필요성 Index Scan 또는 Full Scan 등 옵티마이저는 통계정보에 따라 더 효율성이 높은 방식을 채택해 데이터를 처리합니다. ​ ​ ​ Example ​​ C1=3인 row들의 C1, C2값 추출 방법 ​ Table T (C1 NUMBER, C2 VARCHAR2(10)) Index I ON T(C1) SELECT * FROM T WHERE C1=3 ​ ​ Case 1. 값이 광범위하게 분포된..

튜닝 2023.06.08

[Tibero] SQL Tuning (7)

Tuning 대상 식별 도구 5. SQL Plan History (SPH) SQL Plan History는 서버가 실행한 SQL의 이력을 저장, 관리하는 기능입니다. ​ 실행계획이 오랜기간 사용되지 않거나 서버가 재부팅되면 그 실행계획은 메모리에서 삭제되어 변화를 감지하고 추적하기가 어렵습니다. SPH는 실행계획을 별도의 테이블에 저장함으로써 시간에 따른 실행계획 변화를 사용자가 쉽게 관리할 수 있도록 합니다. 응답시간의 차이가 발생합니다. Note! Tibero 5 SP1 버전부터 SPH 기능을 포함합니다. ​ ​ ldbms_sph.update_plan_history(min_exec_count=>n) ​ 현재 library cache의 plan 중에서 n번 이상 실행된 plan을 테이블에 저장합니다. ..

튜닝 2023.06.05

[Tibero] SQL Tuning (6)

Tuning 대상 식별 도구 본 문서에서는 SQL, 시스템 등 실행 쿼리에 대한 정보를 확인할 수 있는 도구들에 대해 안내합니다. ​ 4. TPR (Tibero Performance Repository) APM으로서의 TPR은 Tibero DBMS의 통계 정보를 주기적으로 자동 수집 및 분석 리포트 출력 기능을 제공함으로써 DBA가 시스템 부하 분석 등 성능 문제 진단 시 도움을 줄 수 있습니다. ​​ 4.1. 주요 기능 4.1.1. 스냅샷 저장 기능 _vt_jcntstat, v$system_event, v$sqlstats, v$sgastat 등 Tibero의 각종 성능 통계 정보를 주기적으로 (약 1시간) 테이블에 저장합니다. TPR은 이렇게 저장된 정보인 '스냅샷'을 이용해 성능 분석 리포트를 만드는..

튜닝 2023.06.05

[Tibero] SQL Tuning (5)

Tuning 대상 식별 도구 본 문서에서는 SQL, 시스템 등 실행 쿼리에 대한 정보를 확인할 수 있는 도구들에 대해 안내합니다. ​​ 1. 동적성능 뷰 (DPV, Dynamic Performance Veiws) DBMS 조작 시 필요한 정보인 DBMS의 상태와 성능확인, 모니터링 등을 위한 뷰 입니다. SQL 관련 시스템 관련 v$sqlarea v$sqlstats v$sql_plan v$sql_plan_statistics v$sysstat v$session v$pgastat, v$sgastat, v$osstat v$system_event, v$latch v$librarycache ​ ​ 2. Autotrace 수행중인 쿼리의 실행 계획이나 통계 정보를 보여줍니다. Autotrace는 티베로(Tibero..

튜닝 2023.06.01