일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- tas tac
- VM 설정
- oracle
- python3.7
- vm tac 구성
- DDL 추출
- terraform
- X11
- tablespace
- 프로그래머스
- tac
- implicit
- OPEN CURSOR
- 티베로
- CentOS
- 암시적 커서
- Linux
- VMware
- 리눅스
- golang
- tibero
- db
- 코딩테스트
- Python
- vm
- 코테
- X11 forwarding
- Tuple
- 묵시적 커서
- 파이썬
- Today
- Total
줄기세포
[Tibero] SQL 플랜 본문
1. SQL플랜
쿼리 플랜은 optimizer에 의해서 생성되고 V$SQL_PLAN 에 저장된다.
V$SQL_PLAN에 없는 새로운 쿼리문이 들어오면, optimizer는 플랜을 생성하는데, 이 과정을 hard parsing이라고 부른다.
optimizer가 플랜을 생성하지 않고 V$SQL_PLAN의 계획을 재사용하는 것은 soft parsing이라 부른다.
쿼리를 수행하면서 플랜을 보기 위해서는 아래 명령어를 입력하면 볼 수 있다.
SQL> SET AUTOT[RACE] {OFF|ON|TRACE[ONLY]} [옵션절];
쿼리 수행 시 TRACE 정보가 ON 상태면, V$SQL_PLAN에 저장된 정보를 표시해준다.
2. tbsql 툴에서 쿼리플랜 및 통계정보 보는 방법
SQL> SET AUTOT[RACE] {OFF|ON|TRACE[ONLY]} [옵션절];
옵션절에 적절한 조합으로 trace 정보는 아래 세가지로 구성되어 있다.
- EXPLAIN(플랜 노드 정보) : Execution Plan
- STATISTICS(수행 후 전체 통계 정보)
- PLANSTAT(플랜 노드 별 수행 정보) : Executio Stat
|
실제 수행 여부 |
수행결과
표시 |
실행계획
(Execution Plan) |
실행통계
|
수행정보
(Execution Stat) |
비고
|
(0) set autot off
|
O
|
O
|
|
|
|
(기본값)
|
(1) set autotrace on
|
O
|
O
|
O
|
O
|
|
|
(2) set autotrace on explain
|
O |
O
|
O
|
|
|
|
(3) set autotrace on statistics
|
O
|
O
|
|
O
|
|
|
(4) set autotrace on planstat
|
O
|
O
|
|
|
O
|
|
(5) set autotrace on explain planstat
|
O |
O
|
O
|
|
O
|
|
(6) set autotrace traceonly
|
O
|
|
O
|
O
|
|
|
(7) set autotrace trace(only) exp(lain)
|
|
|
O
|
|
|
|
(8) set autotrace trace(only) stat(istics)
|
O
|
|
|
O
|
|
|
(9) set autotrace trace planstat
|
O
|
|
|
|
O
|
|
(10) set autot on explain statistics planstat
|
O
|
O
|
O
|
O
|
O
|
모든걸 다 켠다 |
실제 수행 여부: DB에서 실제로 수행이 되는지 여부로 DB 리소스를 사용하게 된다.
화면으로 결과를 표출하는 것은 아니기 때문에 헷갈릴 수 있다.
실행계획 (Execution Plan) : Optimizer가 생성한 계획.
실행통계 : 쿼리 수행 중 변경, 사용된 리소스 통계를 보여줌
수행정보 (Execution Stat) : 실행계획 별로 times, rows, starts를 얼마나 사용했는지 나타내준다. <-V$SQL_PLAN_STATISTICS 의 정보를 가져오는 것 같다.
traceonly를 켰을 때 (실행계획, 실행통계 표출) |
SQL> set autot on explain statistics planstat SQL> select sum(quantity), product_id from ORDER_ITEMS where unit_price >100 group by product_id; ---- 실행결과 ---- SUM(QUANTITY) PRODUCT_ID ------------- ---------- ..... 500 287 106 288 232 rows selected. SQL ID: 8dm23fpdbvsxm Child number: 10919 Plan hash value: 3631694354 ---- 실행계획 ---- Execution Plan -------------------------------------------------------------------------------- 1 GROUP BY (SORT) (Cost:23, %%CPU:0, Rows:66) 2 TABLE ACCESS (FULL): ORDER_ITEMS (Cost:23, %%CPU:0, Rows:66) Predicate Information -------------------------------------------------------------------------------- 2 - filter: ("ORDER_ITEMS"."UNIT_PRICE" > 100) (0.100) ---- 실행통계 ---- NAME VALUE ------------------------------ ---------- db block gets 1 consistent gets 14 physical reads 0 redo size 0 sorts (disk) 0 sorts (memory) 1 rows processed 232 ---- 수행정보 ---- Execution Stat -------------------------------------------------------------------------------- 1 GROUP BY (SORT) (Time:.43 ms, Rows:232, Starts:1) 2 TABLE ACCESS (FULL): ORDER_ITEMS (Time:.12 ms, Rows:608, Starts:1) |
* 실행통계 |
db block gets : 현재의 블록이 요구된 횟수 |
consistent gets : consistent mode에서 읽은 논리 블록 수를 누적한 시스템 통계정보 |
physical reads : 디스크로부터 읽은 데이터 블록의 총 개수 |
redo size : redo log가 만들어진 크기 (size) |
sorts (disk) : disk에서 일어난 sort 수 |
sorts (memory) : memory에서 일어난 sort 수 |
rows processed : 연산을 하는 동안 처리한 row 수 |
참고> 접속한 유저가 plustrace role이 없다면, 아래와 같은 오류가 난다.
plustrace role이 초기 설치에는 존재하지 않을 것이기 때문에,
아래처럼 $TB_HOME/scripts/ 경로의 plustrace.sql 을 dba 권한을 가진 유저로 수행한다.
[tibero@test ~]$ cd $TB_HOME/scripts/ [tibero@test /db/tibero6/scripts]$ ls -alrt | grep plustrace -rw-r--r--. 1 tibero dba 227 Nov 25 11:30 plustrace.sql [tibero@test /db/tibero6/scripts]$ tbsql sys/tibero @plustrace.sql tbSQL 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Connected to Tibero. Role 'PLUSTRACE' dropped. Role 'PLUSTRACE' created. Granted. Granted. Granted. Granted. SQL> grant plustrace to [USER]; |
plustrace.sql 내부는 이렇게 생겼다.
plustrace.sql |
drop role plustrace; create role plustrace; grant select on vt_autotracestat to plustrace; grant select on v$sql_plan to plustrace; grant select on v$sql_plan_statistics to plustrace; grant plustrace to dba with admin option; |
그냥 grant 옵션을 sql plan을 보려는 user에게 부여해도 된다.
grant select on vt_autotracestat to [USER]; grant select on v$sql_plan to [USER]; grant select on v$sql_plan_statistics to [USER]; |
3. Tibero Studio에서 보는 방법
A> DBA권한을 활성화 하는 방법은 TiberoStudio.ini 파일을 메모장으로 열어서 빨간색 부분처럼 true로 변경한다.(기본값: false)
-startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502 -logLevel=info -isDBA=true -vmargs -Xms256m -Xmx1024m |
B> DBA - SQL Monitor를 활성화 하면 된다.
'DB > Tibero' 카테고리의 다른 글
[Tibero] PLUSTRACE ROLE 생성 (0) | 2022.03.15 |
---|---|
[Tibero] 티베로 필수 설치 패키지 (0) | 2022.02.21 |
[Tibero] dbms_metadata.get_ddl) TABLE 등 DDL 추출 방법 (0) | 2022.02.17 |
[Tibero] 백업 & 복구 (0) | 2022.02.07 |
[Tibero] 리스너와 접속제어 (0) | 2022.01.27 |