SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
WareValley
http://www.WareValley.com
WareValley
Oracle 성능 관리
& v$sysstat
오렌지팀 윤석준 선임연구원
반도의 흔한 Oracle Tuning 절차
Explain Plan
AutoTrace
SQL*Trace
실행계획 확인
수행 시 실제 작업량 측정
내부 수행 절차상
부하를 일으키는 단계 확인
문제
파악
Query 변경
Hint 사용
Index 조정
그래도
안되면 ?
반정규화
집계Table 생성
Explain Plan
얼추 Orange에서 확인이 된다. (자세한 설명은 Pass)
굳이 SQLPlus에서 할려면… 쪼메 복잡함. 그냥 안 하는게 나음
AutoTrace
얼추 모든 면에서 SQL*Trace보다 안 좋다고 하던데…
Orange에서도 그냥 확인이 가능하고
굳이 SQLPlus에서 할려면…
http://www.slideshare.net/seokjoonyun9/20150612-oracle-1 참조
SQL*Trace
얼추 강려크하긴 한데… 쪼메 귀찮은 작업이 많이 필요하다.
하지만 Orange Plan Tool에서는 편하게 확인이 가능
굳이 SQLPlus에서 할려면…
http://www.slideshare.net/seokjoonyun9/20150612-oracle-1 참조
Compile Time : 2015/07/09 13:31:22
Trace File : c:oraclediagrdbmsorclorcltraceorcl_ora_11048.trc
Trace Version : 11.2.0.1.0
********************************************************************************
SELECT * FROM SCOTT.EMP
WHERE DEPTNO = :"SYS_B_0"
Call Count CPU Time Elapsed Time Disk Query Current Rows
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Parse 1 0.000 0.000 0 0 0 0
Execute 1 0.000 0.001 0 0 0 0
Fetch 1 0.000 0.000 0 3 0 0
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Total 3 0.000 0.001 0 3 0 0
Misses in library cache during parse : 1
Optimizer Goal : ALL_ROWS
Parsing user : SYS (ID=0)
Rows Row Source Operation
------- -----------------------------------------------------------------------
0 TABLE ACCESS FULL EMP (cr=3 pr=0 pw=0 time=0 us cost=2 size=190 card=5)
SCOTT.EMP
---------
Rows=14 Blocks=1
Empty_Blocks=0 Avg_Space=0
Chain_Count=0 Avg_Row_Length=38
Avg_Space_Freelist_Blocks=0 Freelist_Blocks=0
Sample_Size=14 Last_Analyzed='2015/06/14 13:48:32'
Partitioned='NO' Tablespace='SYSTEM'
Column Name Nullable Column Type Distinct Buckets
-------------------------------- -------- ------------------- ---------- ----------
EMPNO NUMBER(4) 14 1
ENAME VARCHAR2(10) 14 1
JOB VARCHAR2(9) 5 1
MGR NUMBER(4) 6 1
HIREDATE DATE 13 1
SAL NUMBER(7,2) 12 1
COMM NUMBER(7,2) 4 1
DEPTNO NUMBER(2) 3 1
INDEX
-----------------------------------------------------------------------------
EMP_DEPTNO : DEPTNO
Type='NORMAL', Uniq='NO', Distinct=3, Rows=14, Last_Analyzed='2015/06/18 17:13:25'
I_EMP_EMPNO : EMPNO
Type='NORMAL', Uniq='YES', Distinct=14, Rows=14, Last_Analyzed='2015/06/23 10:49:35'
I_EMP_EMPNO_ENAME : EMPNO,ENAME
Type='NORMAL', Uniq='NO', Distinct=14, Rows=14, Last_Analyzed='2015/06/23 10:48:23'
I_EMP_ENAME : ENAME
Type='NORMAL', Uniq='NO', Distinct=14, Rows=14, Last_Analyzed='2015/06/22 18:16:37'
EMP_SAL : SAL
Type='NORMAL', Uniq='NO', Distinct=12, Rows=14, Last_Analyzed='2015/06/18 17:34:45'
뽀나스로 스키마 정보까지
SQL*Trace
Compile Time : 2015/07/09 13:31:22
Trace File : c:oraclediagrdbmsorclorcltraceorcl_ora_11048.trc
Trace Version : 11.2.0.1.0
********************************************************************************
SELECT * FROM SCOTT.EMP
WHERE DEPTNO = :"SYS_B_0"
Call Count CPU Time Elapsed Time Disk Query Current Rows
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Parse 1 0.000 0.000 0 0 0 0
Execute 1 0.000 0.001 0 0 0 0
Fetch 1 0.000 0.000 0 3 0 0
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Total 3 0.000 0.001 0 3 0 0
Misses in library cache during parse : 1
Optimizer Goal : ALL_ROWS
Parsing user : SYS (ID=0)
Rows Row Source Operation
------- -----------------------------------------------------------------------
0 TABLE ACCESS FULL EMP (cr=3 pr=0 pw=0 time=0 us cost=2 size=190 card=5)
Column Description
Call Parse : Cursor를 Parsing 하고
Execution Plan을 생성하는데 대한 통계
Execute : Cursor의 실행 단계에 대한 통계
Fetch : Record를 실제로 Fetch하는데 대한 통계
Count 수행 횟수
CPU CPU 사용 시간
Elapsed 수행 소요 시간 : CPU time + Wait Time
( = Response 시점 – Call 시점)
Disk Disk로부터 읽은 Block 수
Query Consistent Mode에서 읽은 Buffer Block 수
Current Current Mode에서 읽은 Buffer Block수
Rows 읽거나 갱신한 처리 건수
Column Description
cr Consistent Mode Block Read
pr Physical Disk Block Read
pw Physical Disk Block Write
time 소요시간 ( um : microsecond)
cost 현재 Step에서 야기된 cost
size 현재 Step에서의 data size
card cardinality
Trace File에서 각 항들의 의미
DML : Parse Call + Execute Call
SELECT : Parse Call + Execute Call + Fetch Call (1회 이상 : 전송 Record 수 / ArraySize)
SQL*Trace
Event Trace
v$sysstat
• v$sysstat : Instance 가동 후 현재까지 누적 통계치
• v$sesstat : 개별 세션별로 확인
• v$mystat : 현재 접속해 있는 본인 세션
SQL이 수행되는 동안 지속적으로 그 항목들에 대한 누적 통계치를 저장
• v$sysstat 활용 방안 (예시)
1. 변화량 기반 분석
특정 시점들의 v$sysstat 값들을 별도 Table로 저장 한 뒤
그 사이의 delta 값으로 분석
(자세한 설명은 생략. 왜 ? 그냥 AWR을 활용하면 되니깐)
2. Ratio 기반 분석
Database의 전반적인 Health Check Ratio 값들을 연산
Ratio 분석
• Buffer Nowait %
buffer Block을 읽으려 할 때 buffer busy waits 대기 없이 곧바로 읽기에 성공한 비율
SELECT ROUND(100*(1-BFWT/GETS),2) "Buffer Nowait %"
FROM
(SELECT SUM(COUNT) BFWT FROM V$WAITSTAT),
(SELECT VALUE GETS FROM V$SYSSTAT WHERE NAME = 'session logical reads')
Ratio 분석
• Redo Nowait %
Redo Log를 기록할 공간을 요청하지 않고 곧바로 Redo Entry를 기록한 비율
비율이 낮다면 Log Switching 이 느리거나 너무 자주 발생함을 의미
Redo Log File 크기를 늘리거나, 덜 바쁜 Disk로 옮겨야 한다.
SELECT ROUND(100*(1-RLSR/RENT),2) "Redo Nowait %"
FROM
(SELECT VALUE RLSR FROM V$SYSSTAT WHERE NAME = 'redo log space requests'),
(SELECT VALUE RENT FROM V$SYSSTAT WHERE NAME = 'redo entries')
Ratio 분석
• Buffer Hit %
Disk 읽기를 수반하지 않고 Buffer Cache에서 Block 찾기에 성공한 비율
SELECT ROUND(100*(1-(PHYR-PHYRD-NVL(PHYRDL,0))/GETS),2) "Buffer Hit %"
FROM
(SELECT VALUE PHYR FROM V$SYSSTAT WHERE NAME = 'physical reads'),
(SELECT VALUE PHYRD FROM V$SYSSTAT WHERE NAME = 'physical reads direct'),
(SELECT VALUE PHYRDL FROM V$SYSSTAT WHERE NAME = 'physical reads direct (lob)'),
(SELECT VALUE GETS FROM V$SYSSTAT WHERE NAME = 'session logical reads')
Ratio 분석
• Latch Hit %
Latch 경합 없이 첫 번째 시도에서 곧바로 Latch를 획득한 비율
SELECT ROUND(100*(1-SUM(MISSES)/SUM(GETS)),2) "Latch Hit %"
FROM V$LATCH
Ratio 분석
• Library Hit %
Library Cache에 이미 적재된 SQL Cursor를 찾아서 바로 Hit한 확률
Pin 히트율은 Execute단계와 관련이 있고,
Get 히트율은 Parse 단계와 관련이 있다.
SELECT ROUND(100 * SUM(PINHITS) / SUM(PINS) , 2) "Library Cache Pin Hit %",
ROUND(100 * SUM(GETHITS) / SUM(GETS) , 2) "Library Cache Get Hit %"
FROM V$LIBRARYCACHE
Ratio 분석
• Soft Parse %
Execution Plan이 Library Cache에서 찾아져 Hard Parsing을 하지 않고 SQL을 수행한 비율
이 비율이 낮다면 Bind Variable를 사용하도록 개선해야 한다.
SELECT ROUND(100 * (1 - HPRS / PRSE), 2) "Soft Parse %"
FROM
(SELECT VALUE HPRS FROM V$SYSSTAT WHERE NAME = 'parse count (hard)'),
(SELECT VALUE PRSE FROM V$SYSSTAT WHERE NAME = 'parse count (total)')
Ratio 분석
• Execute to Parse %
Parse Call 없이 바로 SQL을 수행한 비율
SELECT ROUND(100 * (1 - PRSE / EXE), 2) "Execute to Parse %"
FROM
(SELECT VALUE EXE FROM V$SYSSTAT WHERE NAME = 'execute count'),
(SELECT VALUE PRSE FROM V$SYSSTAT WHERE NAME = 'parse count (total)')
Ratio 분석
• Parse CPU to Parse Elapsed %
Parsing 총 시간 중 CPU time이 차지한 비율
이 값이 낮다면 Parsing 도중 Wait가 많이 발생했음을 의미
SELECT DECODE(PRSELA,
0, TO_NUMBER(NULL),
ROUND(PRSCPU / PRSELA * 100, 2)) "Parse CPU to Parse Elapsed %"
FROM
(SELECT VALUE PRSELA FROM V$SYSSTAT WHERE NAME = 'parse time elapsed'),
(SELECT VALUE PRSCPU FROM V$SYSSTAT WHERE NAME = 'parse time cpu')
Ratio 분석
• Non-Parse CPU %
SQL 수행하면서 사용한 전체 CPU time 중 Parsing 이외의 작업의 비율
이 비율이 낮다면 Parsing 부하를 줄이도록 개선해야 한다.
SELECT DECODE(TCPU,
0, TO_NUMBER(NULL),
ROUND(PRSCPU / TCPU * 100, 2)) "Non-Parse CPU %"
FROM
(SELECT VALUE TCPU FROM V$SYSSTAT WHERE NAME = 'CPU used by this session'),
(SELECT VALUE PRSCPU FROM V$SYSSTAT WHERE NAME = 'parse time cpu')
Ratio 분석
• In-memory Sort %
전체 Sort 중 In-memory Sort로 수행한 비율
SELECT DECODE((SRTM+SRTD),
0, TO_NUMBER(NULL),
ROUND(100 * SRTM / (SRTD + SRTM), 2)) "In-memory Sort %"
FROM
(SELECT VALUE SRTM FROM V$SYSSTAT WHERE NAME = 'sorts (memory)'),
(SELECT VALUE SRTD FROM V$SYSSTAT WHERE NAME = 'sorts (disk)')
Ratio 분석
• Memory Usage %
Shared Pool 내에서 현재 사용 중인 메모리 비율
SELECT ROUND(100 * (1 - SUM(DECODE(NAME, 'free memory', BYTES))
/ SUM(BYTES)), 2) "Memory Usage %"
FROM V$SGASTAT
WHERE POOL = 'shared pool'

Weitere ähnliche Inhalte

Was ist angesagt?

Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)
Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)
Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)Spark Summit
 
Multi-tenant, Multi-cluster and Multi-container Apache HBase Deployments
Multi-tenant, Multi-cluster and Multi-container Apache HBase DeploymentsMulti-tenant, Multi-cluster and Multi-container Apache HBase Deployments
Multi-tenant, Multi-cluster and Multi-container Apache HBase DeploymentsDataWorks Summit
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesPeter Hlavaty
 
오렌지6.0 교육자료
오렌지6.0 교육자료오렌지6.0 교육자료
오렌지6.0 교육자료Seok-joon Yun
 
Freeware Security Tools You Need
Freeware Security Tools You NeedFreeware Security Tools You Need
Freeware Security Tools You Needamiable_indian
 
Exadata I/O Resource Manager (Exadata IORM)
Exadata I/O Resource Manager (Exadata IORM)Exadata I/O Resource Manager (Exadata IORM)
Exadata I/O Resource Manager (Exadata IORM)Monowar Mukul
 
Part2 Best Practices for Managing Optimizer Statistics
Part2 Best Practices for Managing Optimizer StatisticsPart2 Best Practices for Managing Optimizer Statistics
Part2 Best Practices for Managing Optimizer StatisticsMaria Colgan
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
Hive + Tez: A Performance Deep Dive
Hive + Tez: A Performance Deep DiveHive + Tez: A Performance Deep Dive
Hive + Tez: A Performance Deep DiveDataWorks Summit
 
Chaos Engineering on Cloud Foundry
Chaos Engineering on Cloud FoundryChaos Engineering on Cloud Foundry
Chaos Engineering on Cloud FoundryKarun Chennuri
 
Oracle 10g Performance: chapter 02 aas
Oracle 10g Performance: chapter 02 aasOracle 10g Performance: chapter 02 aas
Oracle 10g Performance: chapter 02 aasKyle Hailey
 

Was ist angesagt? (15)

Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)
Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)
Data Storage Tips for Optimal Spark Performance-(Vida Ha, Databricks)
 
Multi-tenant, Multi-cluster and Multi-container Apache HBase Deployments
Multi-tenant, Multi-cluster and Multi-container Apache HBase DeploymentsMulti-tenant, Multi-cluster and Multi-container Apache HBase Deployments
Multi-tenant, Multi-cluster and Multi-container Apache HBase Deployments
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
 
Data Lake
Data LakeData Lake
Data Lake
 
Capacity Planning IT
Capacity Planning ITCapacity Planning IT
Capacity Planning IT
 
오렌지6.0 교육자료
오렌지6.0 교육자료오렌지6.0 교육자료
오렌지6.0 교육자료
 
Freeware Security Tools You Need
Freeware Security Tools You NeedFreeware Security Tools You Need
Freeware Security Tools You Need
 
Variables in Pharo
Variables in PharoVariables in Pharo
Variables in Pharo
 
Fig 9-02
Fig 9-02Fig 9-02
Fig 9-02
 
Exadata I/O Resource Manager (Exadata IORM)
Exadata I/O Resource Manager (Exadata IORM)Exadata I/O Resource Manager (Exadata IORM)
Exadata I/O Resource Manager (Exadata IORM)
 
Part2 Best Practices for Managing Optimizer Statistics
Part2 Best Practices for Managing Optimizer StatisticsPart2 Best Practices for Managing Optimizer Statistics
Part2 Best Practices for Managing Optimizer Statistics
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
Hive + Tez: A Performance Deep Dive
Hive + Tez: A Performance Deep DiveHive + Tez: A Performance Deep Dive
Hive + Tez: A Performance Deep Dive
 
Chaos Engineering on Cloud Foundry
Chaos Engineering on Cloud FoundryChaos Engineering on Cloud Foundry
Chaos Engineering on Cloud Foundry
 
Oracle 10g Performance: chapter 02 aas
Oracle 10g Performance: chapter 02 aasOracle 10g Performance: chapter 02 aas
Oracle 10g Performance: chapter 02 aas
 

Andere mochten auch

[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1Seok-joon Yun
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 
OOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagramsOOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagramsKyle Hailey
 
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2Seok-joon Yun
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
[2015-06-05] Oracle TX Lock
[2015-06-05] Oracle TX Lock[2015-06-05] Oracle TX Lock
[2015-06-05] Oracle TX LockSeok-joon Yun
 
[2015-05-22] Oracle Ways of Concurrency Control
[2015-05-22] Oracle Ways of Concurrency Control[2015-05-22] Oracle Ways of Concurrency Control
[2015-05-22] Oracle Ways of Concurrency ControlSeok-joon Yun
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other FeaturesJongJin Lee
 
MariaDB
MariaDBMariaDB
MariaDBymtech
 
MariaDB Optimization
MariaDB OptimizationMariaDB Optimization
MariaDB OptimizationJongJin Lee
 
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기복연 이
 
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
SSD 개념 및 활용_Wh oracle
SSD 개념 및 활용_Wh oracleSSD 개념 및 활용_Wh oracle
SSD 개념 및 활용_Wh oracle엑셈
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)중선 곽
 
7급 공무원도 쉽게 따라하는 쉘 스크립트
7급 공무원도 쉽게 따라하는 쉘 스크립트7급 공무원도 쉽게 따라하는 쉘 스크립트
7급 공무원도 쉽게 따라하는 쉘 스크립트Young-Ho Cha
 
간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기licubeclub
 
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도복연 이
 

Andere mochten auch (19)

[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
OOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagramsOOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagrams
 
Exadata database machine_x5-2
Exadata database machine_x5-2Exadata database machine_x5-2
Exadata database machine_x5-2
 
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
[2015-06-05] Oracle TX Lock
[2015-06-05] Oracle TX Lock[2015-06-05] Oracle TX Lock
[2015-06-05] Oracle TX Lock
 
[2015-05-22] Oracle Ways of Concurrency Control
[2015-05-22] Oracle Ways of Concurrency Control[2015-05-22] Oracle Ways of Concurrency Control
[2015-05-22] Oracle Ways of Concurrency Control
 
Oracle History #9
Oracle History #9Oracle History #9
Oracle History #9
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other Features
 
MariaDB
MariaDBMariaDB
MariaDB
 
MariaDB Optimization
MariaDB OptimizationMariaDB Optimization
MariaDB Optimization
 
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
 
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
SSD 개념 및 활용_Wh oracle
SSD 개념 및 활용_Wh oracleSSD 개념 및 활용_Wh oracle
SSD 개념 및 활용_Wh oracle
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)
 
7급 공무원도 쉽게 따라하는 쉘 스크립트
7급 공무원도 쉽게 따라하는 쉘 스크립트7급 공무원도 쉽게 따라하는 쉘 스크립트
7급 공무원도 쉽게 따라하는 쉘 스크립트
 
간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기간단한 쉘 스크립트 작성하기
간단한 쉘 스크립트 작성하기
 
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
 

Ähnlich wie [2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat

데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝 Jinuk Bhak
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기Kenu, GwangNam Heo
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitorjieun kim
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance TuningJi-Woong Choi
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle엑셈
 
Result Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracleResult Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracle엑셈
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle엑셈
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차희동 강
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin GuideJEONGPHIL HAN
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploitsGangSeok Lee
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차희동 강
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Ähnlich wie [2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat (20)

3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
 
데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝
 
1.7 튜닝의도구 sql autorace
1.7 튜닝의도구 sql autorace1.7 튜닝의도구 sql autorace
1.7 튜닝의도구 sql autorace
 
Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
1.11 실행계획 해석 predicate
1.11 실행계획 해석 predicate1.11 실행계획 해석 predicate
1.11 실행계획 해석 predicate
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 
Result Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracleResult Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracle
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracleSQL Profile을 이용한 SQL Plan 변경_Wh oracle
SQL Profile을 이용한 SQL Plan 변경_Wh oracle
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)
3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)
3.5 실행계획 SQL 연산 (HASH SEMI-JOIN)
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 

Mehr von Seok-joon Yun

Retrospective.2020 03
Retrospective.2020 03Retrospective.2020 03
Retrospective.2020 03Seok-joon Yun
 
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image ConverterAWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image ConverterSeok-joon Yun
 
아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지Seok-joon Yun
 
Pro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, PerformancePro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, PerformanceSeok-joon Yun
 
Doing math with python.ch07
Doing math with python.ch07Doing math with python.ch07
Doing math with python.ch07Seok-joon Yun
 
Doing math with python.ch06
Doing math with python.ch06Doing math with python.ch06
Doing math with python.ch06Seok-joon Yun
 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05Seok-joon Yun
 
Doing math with python.ch04
Doing math with python.ch04Doing math with python.ch04
Doing math with python.ch04Seok-joon Yun
 
Doing math with python.ch03
Doing math with python.ch03Doing math with python.ch03
Doing math with python.ch03Seok-joon Yun
 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02Seok-joon Yun
 
Doing math with python.ch01
Doing math with python.ch01Doing math with python.ch01
Doing math with python.ch01Seok-joon Yun
 
Pro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScriptPro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScriptSeok-joon Yun
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsSeok-joon Yun
 
Welcome to Modern C++
Welcome to Modern C++Welcome to Modern C++
Welcome to Modern C++Seok-joon Yun
 
[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2Seok-joon Yun
 
[KOSSA] C++ Programming - 18th Study - STL #4
[KOSSA] C++ Programming - 18th Study - STL #4[KOSSA] C++ Programming - 18th Study - STL #4
[KOSSA] C++ Programming - 18th Study - STL #4Seok-joon Yun
 
[KOSSA] C++ Programming - 17th Study - STL #3
[KOSSA] C++ Programming - 17th Study - STL #3[KOSSA] C++ Programming - 17th Study - STL #3
[KOSSA] C++ Programming - 17th Study - STL #3Seok-joon Yun
 

Mehr von Seok-joon Yun (20)

Retrospective.2020 03
Retrospective.2020 03Retrospective.2020 03
Retrospective.2020 03
 
Sprint & Jira
Sprint & JiraSprint & Jira
Sprint & Jira
 
Eks.introduce.v2
Eks.introduce.v2Eks.introduce.v2
Eks.introduce.v2
 
Eks.introduce
Eks.introduceEks.introduce
Eks.introduce
 
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image ConverterAWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
 
아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지
 
Pro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, PerformancePro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, Performance
 
Doing math with python.ch07
Doing math with python.ch07Doing math with python.ch07
Doing math with python.ch07
 
Doing math with python.ch06
Doing math with python.ch06Doing math with python.ch06
Doing math with python.ch06
 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05
 
Doing math with python.ch04
Doing math with python.ch04Doing math with python.ch04
Doing math with python.ch04
 
Doing math with python.ch03
Doing math with python.ch03Doing math with python.ch03
Doing math with python.ch03
 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02
 
Doing math with python.ch01
Doing math with python.ch01Doing math with python.ch01
Doing math with python.ch01
 
Pro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScriptPro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScript
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threads
 
Welcome to Modern C++
Welcome to Modern C++Welcome to Modern C++
Welcome to Modern C++
 
[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2
 
[KOSSA] C++ Programming - 18th Study - STL #4
[KOSSA] C++ Programming - 18th Study - STL #4[KOSSA] C++ Programming - 18th Study - STL #4
[KOSSA] C++ Programming - 18th Study - STL #4
 
[KOSSA] C++ Programming - 17th Study - STL #3
[KOSSA] C++ Programming - 17th Study - STL #3[KOSSA] C++ Programming - 17th Study - STL #3
[KOSSA] C++ Programming - 17th Study - STL #3
 

[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat

  • 1. WareValley http://www.WareValley.com WareValley Oracle 성능 관리 & v$sysstat 오렌지팀 윤석준 선임연구원
  • 2. 반도의 흔한 Oracle Tuning 절차 Explain Plan AutoTrace SQL*Trace 실행계획 확인 수행 시 실제 작업량 측정 내부 수행 절차상 부하를 일으키는 단계 확인 문제 파악 Query 변경 Hint 사용 Index 조정 그래도 안되면 ? 반정규화 집계Table 생성
  • 3. Explain Plan 얼추 Orange에서 확인이 된다. (자세한 설명은 Pass) 굳이 SQLPlus에서 할려면… 쪼메 복잡함. 그냥 안 하는게 나음
  • 4. AutoTrace 얼추 모든 면에서 SQL*Trace보다 안 좋다고 하던데… Orange에서도 그냥 확인이 가능하고 굳이 SQLPlus에서 할려면… http://www.slideshare.net/seokjoonyun9/20150612-oracle-1 참조
  • 5. SQL*Trace 얼추 강려크하긴 한데… 쪼메 귀찮은 작업이 많이 필요하다. 하지만 Orange Plan Tool에서는 편하게 확인이 가능 굳이 SQLPlus에서 할려면… http://www.slideshare.net/seokjoonyun9/20150612-oracle-1 참조 Compile Time : 2015/07/09 13:31:22 Trace File : c:oraclediagrdbmsorclorcltraceorcl_ora_11048.trc Trace Version : 11.2.0.1.0 ******************************************************************************** SELECT * FROM SCOTT.EMP WHERE DEPTNO = :"SYS_B_0" Call Count CPU Time Elapsed Time Disk Query Current Rows ------- ------ -------- ------------ ---------- ---------- ---------- ---------- Parse 1 0.000 0.000 0 0 0 0 Execute 1 0.000 0.001 0 0 0 0 Fetch 1 0.000 0.000 0 3 0 0 ------- ------ -------- ------------ ---------- ---------- ---------- ---------- Total 3 0.000 0.001 0 3 0 0 Misses in library cache during parse : 1 Optimizer Goal : ALL_ROWS Parsing user : SYS (ID=0) Rows Row Source Operation ------- ----------------------------------------------------------------------- 0 TABLE ACCESS FULL EMP (cr=3 pr=0 pw=0 time=0 us cost=2 size=190 card=5) SCOTT.EMP --------- Rows=14 Blocks=1 Empty_Blocks=0 Avg_Space=0 Chain_Count=0 Avg_Row_Length=38 Avg_Space_Freelist_Blocks=0 Freelist_Blocks=0 Sample_Size=14 Last_Analyzed='2015/06/14 13:48:32' Partitioned='NO' Tablespace='SYSTEM' Column Name Nullable Column Type Distinct Buckets -------------------------------- -------- ------------------- ---------- ---------- EMPNO NUMBER(4) 14 1 ENAME VARCHAR2(10) 14 1 JOB VARCHAR2(9) 5 1 MGR NUMBER(4) 6 1 HIREDATE DATE 13 1 SAL NUMBER(7,2) 12 1 COMM NUMBER(7,2) 4 1 DEPTNO NUMBER(2) 3 1 INDEX ----------------------------------------------------------------------------- EMP_DEPTNO : DEPTNO Type='NORMAL', Uniq='NO', Distinct=3, Rows=14, Last_Analyzed='2015/06/18 17:13:25' I_EMP_EMPNO : EMPNO Type='NORMAL', Uniq='YES', Distinct=14, Rows=14, Last_Analyzed='2015/06/23 10:49:35' I_EMP_EMPNO_ENAME : EMPNO,ENAME Type='NORMAL', Uniq='NO', Distinct=14, Rows=14, Last_Analyzed='2015/06/23 10:48:23' I_EMP_ENAME : ENAME Type='NORMAL', Uniq='NO', Distinct=14, Rows=14, Last_Analyzed='2015/06/22 18:16:37' EMP_SAL : SAL Type='NORMAL', Uniq='NO', Distinct=12, Rows=14, Last_Analyzed='2015/06/18 17:34:45' 뽀나스로 스키마 정보까지
  • 6. SQL*Trace Compile Time : 2015/07/09 13:31:22 Trace File : c:oraclediagrdbmsorclorcltraceorcl_ora_11048.trc Trace Version : 11.2.0.1.0 ******************************************************************************** SELECT * FROM SCOTT.EMP WHERE DEPTNO = :"SYS_B_0" Call Count CPU Time Elapsed Time Disk Query Current Rows ------- ------ -------- ------------ ---------- ---------- ---------- ---------- Parse 1 0.000 0.000 0 0 0 0 Execute 1 0.000 0.001 0 0 0 0 Fetch 1 0.000 0.000 0 3 0 0 ------- ------ -------- ------------ ---------- ---------- ---------- ---------- Total 3 0.000 0.001 0 3 0 0 Misses in library cache during parse : 1 Optimizer Goal : ALL_ROWS Parsing user : SYS (ID=0) Rows Row Source Operation ------- ----------------------------------------------------------------------- 0 TABLE ACCESS FULL EMP (cr=3 pr=0 pw=0 time=0 us cost=2 size=190 card=5) Column Description Call Parse : Cursor를 Parsing 하고 Execution Plan을 생성하는데 대한 통계 Execute : Cursor의 실행 단계에 대한 통계 Fetch : Record를 실제로 Fetch하는데 대한 통계 Count 수행 횟수 CPU CPU 사용 시간 Elapsed 수행 소요 시간 : CPU time + Wait Time ( = Response 시점 – Call 시점) Disk Disk로부터 읽은 Block 수 Query Consistent Mode에서 읽은 Buffer Block 수 Current Current Mode에서 읽은 Buffer Block수 Rows 읽거나 갱신한 처리 건수 Column Description cr Consistent Mode Block Read pr Physical Disk Block Read pw Physical Disk Block Write time 소요시간 ( um : microsecond) cost 현재 Step에서 야기된 cost size 현재 Step에서의 data size card cardinality Trace File에서 각 항들의 의미 DML : Parse Call + Execute Call SELECT : Parse Call + Execute Call + Fetch Call (1회 이상 : 전송 Record 수 / ArraySize)
  • 8. v$sysstat • v$sysstat : Instance 가동 후 현재까지 누적 통계치 • v$sesstat : 개별 세션별로 확인 • v$mystat : 현재 접속해 있는 본인 세션 SQL이 수행되는 동안 지속적으로 그 항목들에 대한 누적 통계치를 저장 • v$sysstat 활용 방안 (예시) 1. 변화량 기반 분석 특정 시점들의 v$sysstat 값들을 별도 Table로 저장 한 뒤 그 사이의 delta 값으로 분석 (자세한 설명은 생략. 왜 ? 그냥 AWR을 활용하면 되니깐) 2. Ratio 기반 분석 Database의 전반적인 Health Check Ratio 값들을 연산
  • 9. Ratio 분석 • Buffer Nowait % buffer Block을 읽으려 할 때 buffer busy waits 대기 없이 곧바로 읽기에 성공한 비율 SELECT ROUND(100*(1-BFWT/GETS),2) "Buffer Nowait %" FROM (SELECT SUM(COUNT) BFWT FROM V$WAITSTAT), (SELECT VALUE GETS FROM V$SYSSTAT WHERE NAME = 'session logical reads')
  • 10. Ratio 분석 • Redo Nowait % Redo Log를 기록할 공간을 요청하지 않고 곧바로 Redo Entry를 기록한 비율 비율이 낮다면 Log Switching 이 느리거나 너무 자주 발생함을 의미 Redo Log File 크기를 늘리거나, 덜 바쁜 Disk로 옮겨야 한다. SELECT ROUND(100*(1-RLSR/RENT),2) "Redo Nowait %" FROM (SELECT VALUE RLSR FROM V$SYSSTAT WHERE NAME = 'redo log space requests'), (SELECT VALUE RENT FROM V$SYSSTAT WHERE NAME = 'redo entries')
  • 11. Ratio 분석 • Buffer Hit % Disk 읽기를 수반하지 않고 Buffer Cache에서 Block 찾기에 성공한 비율 SELECT ROUND(100*(1-(PHYR-PHYRD-NVL(PHYRDL,0))/GETS),2) "Buffer Hit %" FROM (SELECT VALUE PHYR FROM V$SYSSTAT WHERE NAME = 'physical reads'), (SELECT VALUE PHYRD FROM V$SYSSTAT WHERE NAME = 'physical reads direct'), (SELECT VALUE PHYRDL FROM V$SYSSTAT WHERE NAME = 'physical reads direct (lob)'), (SELECT VALUE GETS FROM V$SYSSTAT WHERE NAME = 'session logical reads')
  • 12. Ratio 분석 • Latch Hit % Latch 경합 없이 첫 번째 시도에서 곧바로 Latch를 획득한 비율 SELECT ROUND(100*(1-SUM(MISSES)/SUM(GETS)),2) "Latch Hit %" FROM V$LATCH
  • 13. Ratio 분석 • Library Hit % Library Cache에 이미 적재된 SQL Cursor를 찾아서 바로 Hit한 확률 Pin 히트율은 Execute단계와 관련이 있고, Get 히트율은 Parse 단계와 관련이 있다. SELECT ROUND(100 * SUM(PINHITS) / SUM(PINS) , 2) "Library Cache Pin Hit %", ROUND(100 * SUM(GETHITS) / SUM(GETS) , 2) "Library Cache Get Hit %" FROM V$LIBRARYCACHE
  • 14. Ratio 분석 • Soft Parse % Execution Plan이 Library Cache에서 찾아져 Hard Parsing을 하지 않고 SQL을 수행한 비율 이 비율이 낮다면 Bind Variable를 사용하도록 개선해야 한다. SELECT ROUND(100 * (1 - HPRS / PRSE), 2) "Soft Parse %" FROM (SELECT VALUE HPRS FROM V$SYSSTAT WHERE NAME = 'parse count (hard)'), (SELECT VALUE PRSE FROM V$SYSSTAT WHERE NAME = 'parse count (total)')
  • 15. Ratio 분석 • Execute to Parse % Parse Call 없이 바로 SQL을 수행한 비율 SELECT ROUND(100 * (1 - PRSE / EXE), 2) "Execute to Parse %" FROM (SELECT VALUE EXE FROM V$SYSSTAT WHERE NAME = 'execute count'), (SELECT VALUE PRSE FROM V$SYSSTAT WHERE NAME = 'parse count (total)')
  • 16. Ratio 분석 • Parse CPU to Parse Elapsed % Parsing 총 시간 중 CPU time이 차지한 비율 이 값이 낮다면 Parsing 도중 Wait가 많이 발생했음을 의미 SELECT DECODE(PRSELA, 0, TO_NUMBER(NULL), ROUND(PRSCPU / PRSELA * 100, 2)) "Parse CPU to Parse Elapsed %" FROM (SELECT VALUE PRSELA FROM V$SYSSTAT WHERE NAME = 'parse time elapsed'), (SELECT VALUE PRSCPU FROM V$SYSSTAT WHERE NAME = 'parse time cpu')
  • 17. Ratio 분석 • Non-Parse CPU % SQL 수행하면서 사용한 전체 CPU time 중 Parsing 이외의 작업의 비율 이 비율이 낮다면 Parsing 부하를 줄이도록 개선해야 한다. SELECT DECODE(TCPU, 0, TO_NUMBER(NULL), ROUND(PRSCPU / TCPU * 100, 2)) "Non-Parse CPU %" FROM (SELECT VALUE TCPU FROM V$SYSSTAT WHERE NAME = 'CPU used by this session'), (SELECT VALUE PRSCPU FROM V$SYSSTAT WHERE NAME = 'parse time cpu')
  • 18. Ratio 분석 • In-memory Sort % 전체 Sort 중 In-memory Sort로 수행한 비율 SELECT DECODE((SRTM+SRTD), 0, TO_NUMBER(NULL), ROUND(100 * SRTM / (SRTD + SRTM), 2)) "In-memory Sort %" FROM (SELECT VALUE SRTM FROM V$SYSSTAT WHERE NAME = 'sorts (memory)'), (SELECT VALUE SRTD FROM V$SYSSTAT WHERE NAME = 'sorts (disk)')
  • 19. Ratio 분석 • Memory Usage % Shared Pool 내에서 현재 사용 중인 메모리 비율 SELECT ROUND(100 * (1 - SUM(DECODE(NAME, 'free memory', BYTES)) / SUM(BYTES)), 2) "Memory Usage %" FROM V$SGASTAT WHERE POOL = 'shared pool'