SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
WareValley
http://www.WareValley.com
WareValley
Oracle
중소기업 DB관리자를 위한 데이터베이스
성능 최적화 및 품질 고도화 전문가 과정
오렌지팀 윤석준 선임연구원
- 1일차 : Tuning 도구
- D/B Tuning이 어려운 이유
- Oracle D/B 구조
- Tuning Tools : AutoTrace, SQL*Trace, V$SQLAREA
- 2일차 : SQL Tuning #1 : Optimizer
- Rule-based Optimizer
- Cost-based Optimizer
- 통계정보, Histogram
- Hint
- 3일차 : SQL Tuning #2 : Index, Join
- Index
- Join
- 4일차 : Server Tuning
- Shared pool tuning
- Data buffer cache tuning
* NoSQL 소개
Database Tuning의 원인과 결과
CPU Memory I/O Network Software
설계 Design/Architecture O O O O O
Coding
DML SQL O O O O O
Query SQL O O O O O
Client/Server Roundtrips O O
D/B 관리
Buffer Cache O O O
Shared Pool O O
Sort Area O O O
Physical Datafile I/O O O
Logfile I/O O O
Archiver-File I/O O O
Undo Segments O O
Locking O O O O
Backups O O O O
Infra
( OS +
Network)
O/S Memory Manage O O O
O/S I/O Manage O O O
OS Process Manage O O
Network Manage O O
Database Tuning이 어려운 이유
개발자
- SQL Tuning 만 한다.
DBA
- D/B Tuning 만 한다.
Server Admin
- Server, OS 관리만 한다.
분석/설계자
- 보통 문제는 설계가 다 끝난 후 생겨서
다시 불러서 뭐라 하기가 쫌…
(그리고 무엇보다도… 부를려니… 비싸.)
슈발자
- 모든 면에서 문제를 파악해서
궁극적으로 해결이 가능한
슈발자 (슈퍼 개발,관리자)가 있다면…
과연 있을까 ???
 Process 영역
User Process, Server Process, Background Process
 Memory 영역 (SGA)
Shared pool , Data buffer cache , Log buffer, Large pool
 File 영역
Control file, Parameter file, Tablespace file, Redo-log file
Oracle D/B 구조
 Server용 Tablespace
- SYSTEM : Dictionary tables, Meta tables, System tables
- UNDO : Transaction 변경 내용의 임시 공간
- TEMP : 2차 가공용 임시공간 ( ORDER BY , GROUP BY )
 Tablespace 설계시 유의사항
- 사용자의 Data를 Server용 Tablespace에 생성하지 마세요.
(System table에서는 항상 엄청난 DML 연산이 일어나고 있습니다.)
- Table과 Index의 Tablespace를 분리하세요. (Block size를 다르게 설정하면 좋아요.)
- 각 Data Tablespace를 분리하면 I/O 경합을 줄일 수 있어요.
- 대용량 Sorting 작업용 TEMP Tablespace를 해당 작업 또는 사용자 만큼
분리하여 할당하세요.
Tablespace
 Check
Tablespace Fragmentation
SELECT TABLESPACE_NAME, TOTAL_EXTENTS, PERCENT_EXTENTS_COALESCED
FROM DBA_FREE_SPACE_COALESCED
WHERE PERCENT_EXTENTS_COALESCED <> 100;
 Solution
1. 빈 공간을 합병
2. Table 생성시 미리 충분한 공간으로 할당
INITIAL, NEXT, MINEXTENTS, MAXEXTENTS, PCTINCREASE 값을 충분히 예상한 후 할당
3. 사용되지 않는 저장공간을 Disk로 반환
ALTER TABLESPACE USERS COALESCE; (한번에 100%가 되진 않으니 여러 번 반복)
ALTER TABLE BIG_EMP DEALLOCATE UNUSED;
Oracle Tuning Tools
Design Tuning
Case Tool
SQL Tuning
Turning Tool
(Oracle Enterprise Manager)
Explain Plan
SQL*Trace & TKPROF
Analyze command
Histogram
DBMS_STATS
Stored Outline
Trace 10053 Event
Server Tuning
Turning Tool
(Oracle Enterprise Manager)
STATSPACK
Performance Dynamic View
Data Dictionary
Alert & Trace File
AUTOTRACE
SET AUTOTRACE [ ON | OFF | TRACE ]
- TRACE : 실행계획, 통계정보
- OFF : 실행결과
- ON : OFF + TRACE 모두
Statistics value
recursive calls 해당 SQL을 실행하기 위해 읽은 Dictionary의 Block
db block gets current mode의 block을 읽은 수 (수정될 값을 읽음)
consistent gets query mode 의 block을 읽은 수 (consistent 보장)
physical reads disk에서 읽은 block 수
redo size 사용한 redo block
sorts (memory) 사용한 temp block (memory)
sors (disk) 사용한 temp block (disk)
rows processed 읽은 row 수
SQL*TRACE + TKPROF
 trace 파일 위치 확인
ALTER SESSION SET SQL_TRACE = TRUE;
SELECT * FROM SCOTT.EMP;
EXIT
SHOW PARAMETER BACKGROUND_DUMP_DEST;
 Trace 실행
 TKPROF로 읽기 편하게 분석
> TKPROF ORCL_ORA_15196.trc T15196.tkf SYS=NO
EXPLAIN = SYSTEM/***
실행계획 보는 법은 각자 쫌…..
Orange Trace Tool을 이용한 trc 분석
V$SQLAREA
SELECT sql_text, version_count, loads, invalidations, parse_calls, sorts , disk_reads, buffer_gets
FROM V$SQLAREA
WHERE sql_text NOT LIKE '%$%' AND command_type IN (2,3,6,7)
ORDER BY parse_calls DESC;
Column value
sql_text SQL 문장
version_count 해당 문장을 실행한 사용자 ID 수
loads Parsing후 SQL문이 Memory로 Load된 수
invalidations Parsing후 해당 Table이 ALTER, DROP, ANALYZE 되어 재사용할수 없음
parse_calls 최초 Parsing후 재사용된 수
sorts 수행된 Sorting 수
command_type Oracle command type : 2 (insert), 3 (select), 6 (update), 7 (delete)
disk_reads DISK-I/O를 유발과 관련된 수
buffer_gets Buffer cache를 사용과 관련된 수
두 항목이 높은 순으로 Top 10 으로 조회한 뒤 Tuning
Orange SQL Monitor Tool
WHERE절의 상수값, Bind Variable 만 다른 경우도 SQL Parsing 결과 공유
CURSOR_SHARING
SELECT sql_text, version_count, loads, invalidations, parse_calls, sorts
FROM V$SQLAREA
WHERE sql_text LIKE 'SELECT * FROM SCOTT.DEPT WHERE DEPTNO = %' AND
command_type = 3
ORDER BY parse_calls DESC;
 검사용 SQL
ALTER SYSTEM SET CURSOR_SHARING = [ EXACT | SIMILAR | FORCE ]
SET value
EXACT 모든 조건이 일치해야만 공유
SIMILAR 바인드 변수가 다른 값을 가지더라도 공유
FORCE 상수가 다르더라도 공유
CURSOR_SHARING (예제)

Contenu connexe

Tendances

High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS
High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS
High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS
Amazon Web Services
 
Constraints In Sql
Constraints In SqlConstraints In Sql
Constraints In Sql
Anurag
 

Tendances (20)

Exadata SMART Monitoring - OEM 13c
Exadata SMART Monitoring - OEM 13cExadata SMART Monitoring - OEM 13c
Exadata SMART Monitoring - OEM 13c
 
Snowflake SnowPro Core Cert CheatSheet.pdf
Snowflake SnowPro Core Cert CheatSheet.pdfSnowflake SnowPro Core Cert CheatSheet.pdf
Snowflake SnowPro Core Cert CheatSheet.pdf
 
Autonomous Database Explained
Autonomous Database ExplainedAutonomous Database Explained
Autonomous Database Explained
 
AWR & ASH Analysis
AWR & ASH AnalysisAWR & ASH Analysis
AWR & ASH Analysis
 
High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS
High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS
High Performance MongoDB Clusters with Amazon EBS Provisioned IOPS
 
Sql server 2019 new features
Sql server 2019 new featuresSql server 2019 new features
Sql server 2019 new features
 
Create Directory Under ASM Diskgroup
Create Directory Under ASM DiskgroupCreate Directory Under ASM Diskgroup
Create Directory Under ASM Diskgroup
 
Introduction to SQL Server Internals: How to Think Like the Engine
Introduction to SQL Server Internals: How to Think Like the EngineIntroduction to SQL Server Internals: How to Think Like the Engine
Introduction to SQL Server Internals: How to Think Like the Engine
 
Oracle Index
Oracle IndexOracle Index
Oracle Index
 
Database Keys & Relationship
Database Keys & RelationshipDatabase Keys & Relationship
Database Keys & Relationship
 
[2015-06-05] Oracle TX Lock
[2015-06-05] Oracle TX Lock[2015-06-05] Oracle TX Lock
[2015-06-05] Oracle TX Lock
 
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsYour tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
 
201809 DB tech showcase
201809 DB tech showcase201809 DB tech showcase
201809 DB tech showcase
 
Debugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauDebugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden Karau
 
1.2 sql create and drop table
1.2 sql create and drop table1.2 sql create and drop table
1.2 sql create and drop table
 
Productizing Structured Streaming Jobs
Productizing Structured Streaming JobsProductizing Structured Streaming Jobs
Productizing Structured Streaming Jobs
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
 
Constraints In Sql
Constraints In SqlConstraints In Sql
Constraints In Sql
 
Microsoft SQL Server internals & architecture
Microsoft SQL Server internals & architectureMicrosoft SQL Server internals & architecture
Microsoft SQL Server internals & architecture
 
ETL Testing Interview Questions and Answers
ETL Testing Interview Questions and AnswersETL Testing Interview Questions and Answers
ETL Testing Interview Questions and Answers
 

En vedette

[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun
 
OOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagramsOOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagrams
Kyle Hailey
 

En vedette (20)

[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
[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
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
 
[2015 05-29] Oracle Lock
[2015 05-29] Oracle Lock[2015 05-29] Oracle Lock
[2015 05-29] Oracle Lock
 
OOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagramsOOUG: VST , visual sql tuning diagrams
OOUG: VST , visual sql tuning diagrams
 
007. appstore api guide sk컴즈 박지연 차장
007. appstore api guide sk컴즈 박지연 차장007. appstore api guide sk컴즈 박지연 차장
007. appstore api guide sk컴즈 박지연 차장
 
A summer to die chapter5
A summer to die chapter5A summer to die chapter5
A summer to die chapter5
 
All about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apmAll about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apm
 
Runtime Data Areas_Wh apm
Runtime Data Areas_Wh apmRuntime Data Areas_Wh apm
Runtime Data Areas_Wh apm
 
IBM JVM GC_Wh apm
IBM JVM GC_Wh apmIBM JVM GC_Wh apm
IBM JVM GC_Wh apm
 
Result Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracleResult Cache 동작원리 및 활용방안_Wh oracle
Result Cache 동작원리 및 활용방안_Wh oracle
 
스위치의 분류 및 역할_Wh apm
스위치의 분류 및 역할_Wh apm스위치의 분류 및 역할_Wh apm
스위치의 분류 및 역할_Wh apm
 
ORACLE EXADATA HCC 압축방식 이해하기_Wh oracle
ORACLE EXADATA HCC 압축방식 이해하기_Wh oracleORACLE EXADATA HCC 압축방식 이해하기_Wh oracle
ORACLE EXADATA HCC 압축방식 이해하기_Wh oracle
 
KEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle
 
네트워크 기반 통신 및 계층 구조_Wh apm
네트워크 기반 통신 및 계층 구조_Wh apm네트워크 기반 통신 및 계층 구조_Wh apm
네트워크 기반 통신 및 계층 구조_Wh apm
 
WINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracleWINDOW FUNCTION의 이해와 활용방법_Wh oracle
WINDOW FUNCTION의 이해와 활용방법_Wh oracle
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm
 
JVM Synchronization_Wh apm
JVM Synchronization_Wh apmJVM Synchronization_Wh apm
JVM Synchronization_Wh apm
 

Similaire à [2015-06-12] Oracle 성능 최적화 및 품질 고도화 1

DBMS 아키텍처
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
HaksunLEE6
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe95
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
Amazon Web Services Korea
 

Similaire à [2015-06-12] Oracle 성능 최적화 및 품질 고도화 1 (20)

Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
 
DBMS 아키텍처
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
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 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 
(120128) #fitalk sql server anti-forensics
(120128) #fitalk   sql server anti-forensics(120128) #fitalk   sql server anti-forensics
(120128) #fitalk sql server anti-forensics
 
Oracle History #7
Oracle History #7Oracle History #7
Oracle History #7
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2
 
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
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)
 
#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.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 

Plus de Seok-joon Yun

Plus de 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-06-12] Oracle 성능 최적화 및 품질 고도화 1

  • 1. WareValley http://www.WareValley.com WareValley Oracle 중소기업 DB관리자를 위한 데이터베이스 성능 최적화 및 품질 고도화 전문가 과정 오렌지팀 윤석준 선임연구원
  • 2. - 1일차 : Tuning 도구 - D/B Tuning이 어려운 이유 - Oracle D/B 구조 - Tuning Tools : AutoTrace, SQL*Trace, V$SQLAREA - 2일차 : SQL Tuning #1 : Optimizer - Rule-based Optimizer - Cost-based Optimizer - 통계정보, Histogram - Hint - 3일차 : SQL Tuning #2 : Index, Join - Index - Join - 4일차 : Server Tuning - Shared pool tuning - Data buffer cache tuning * NoSQL 소개
  • 3. Database Tuning의 원인과 결과 CPU Memory I/O Network Software 설계 Design/Architecture O O O O O Coding DML SQL O O O O O Query SQL O O O O O Client/Server Roundtrips O O D/B 관리 Buffer Cache O O O Shared Pool O O Sort Area O O O Physical Datafile I/O O O Logfile I/O O O Archiver-File I/O O O Undo Segments O O Locking O O O O Backups O O O O Infra ( OS + Network) O/S Memory Manage O O O O/S I/O Manage O O O OS Process Manage O O Network Manage O O
  • 4. Database Tuning이 어려운 이유 개발자 - SQL Tuning 만 한다. DBA - D/B Tuning 만 한다. Server Admin - Server, OS 관리만 한다. 분석/설계자 - 보통 문제는 설계가 다 끝난 후 생겨서 다시 불러서 뭐라 하기가 쫌… (그리고 무엇보다도… 부를려니… 비싸.) 슈발자 - 모든 면에서 문제를 파악해서 궁극적으로 해결이 가능한 슈발자 (슈퍼 개발,관리자)가 있다면… 과연 있을까 ???
  • 5.  Process 영역 User Process, Server Process, Background Process  Memory 영역 (SGA) Shared pool , Data buffer cache , Log buffer, Large pool  File 영역 Control file, Parameter file, Tablespace file, Redo-log file Oracle D/B 구조
  • 6.  Server용 Tablespace - SYSTEM : Dictionary tables, Meta tables, System tables - UNDO : Transaction 변경 내용의 임시 공간 - TEMP : 2차 가공용 임시공간 ( ORDER BY , GROUP BY )  Tablespace 설계시 유의사항 - 사용자의 Data를 Server용 Tablespace에 생성하지 마세요. (System table에서는 항상 엄청난 DML 연산이 일어나고 있습니다.) - Table과 Index의 Tablespace를 분리하세요. (Block size를 다르게 설정하면 좋아요.) - 각 Data Tablespace를 분리하면 I/O 경합을 줄일 수 있어요. - 대용량 Sorting 작업용 TEMP Tablespace를 해당 작업 또는 사용자 만큼 분리하여 할당하세요. Tablespace
  • 7.  Check Tablespace Fragmentation SELECT TABLESPACE_NAME, TOTAL_EXTENTS, PERCENT_EXTENTS_COALESCED FROM DBA_FREE_SPACE_COALESCED WHERE PERCENT_EXTENTS_COALESCED <> 100;  Solution 1. 빈 공간을 합병 2. Table 생성시 미리 충분한 공간으로 할당 INITIAL, NEXT, MINEXTENTS, MAXEXTENTS, PCTINCREASE 값을 충분히 예상한 후 할당 3. 사용되지 않는 저장공간을 Disk로 반환 ALTER TABLESPACE USERS COALESCE; (한번에 100%가 되진 않으니 여러 번 반복) ALTER TABLE BIG_EMP DEALLOCATE UNUSED;
  • 8. Oracle Tuning Tools Design Tuning Case Tool SQL Tuning Turning Tool (Oracle Enterprise Manager) Explain Plan SQL*Trace & TKPROF Analyze command Histogram DBMS_STATS Stored Outline Trace 10053 Event Server Tuning Turning Tool (Oracle Enterprise Manager) STATSPACK Performance Dynamic View Data Dictionary Alert & Trace File
  • 9. AUTOTRACE SET AUTOTRACE [ ON | OFF | TRACE ] - TRACE : 실행계획, 통계정보 - OFF : 실행결과 - ON : OFF + TRACE 모두 Statistics value recursive calls 해당 SQL을 실행하기 위해 읽은 Dictionary의 Block db block gets current mode의 block을 읽은 수 (수정될 값을 읽음) consistent gets query mode 의 block을 읽은 수 (consistent 보장) physical reads disk에서 읽은 block 수 redo size 사용한 redo block sorts (memory) 사용한 temp block (memory) sors (disk) 사용한 temp block (disk) rows processed 읽은 row 수
  • 10. SQL*TRACE + TKPROF  trace 파일 위치 확인 ALTER SESSION SET SQL_TRACE = TRUE; SELECT * FROM SCOTT.EMP; EXIT SHOW PARAMETER BACKGROUND_DUMP_DEST;  Trace 실행  TKPROF로 읽기 편하게 분석 > TKPROF ORCL_ORA_15196.trc T15196.tkf SYS=NO EXPLAIN = SYSTEM/*** 실행계획 보는 법은 각자 쫌…..
  • 11. Orange Trace Tool을 이용한 trc 분석
  • 12. V$SQLAREA SELECT sql_text, version_count, loads, invalidations, parse_calls, sorts , disk_reads, buffer_gets FROM V$SQLAREA WHERE sql_text NOT LIKE '%$%' AND command_type IN (2,3,6,7) ORDER BY parse_calls DESC; Column value sql_text SQL 문장 version_count 해당 문장을 실행한 사용자 ID 수 loads Parsing후 SQL문이 Memory로 Load된 수 invalidations Parsing후 해당 Table이 ALTER, DROP, ANALYZE 되어 재사용할수 없음 parse_calls 최초 Parsing후 재사용된 수 sorts 수행된 Sorting 수 command_type Oracle command type : 2 (insert), 3 (select), 6 (update), 7 (delete) disk_reads DISK-I/O를 유발과 관련된 수 buffer_gets Buffer cache를 사용과 관련된 수 두 항목이 높은 순으로 Top 10 으로 조회한 뒤 Tuning
  • 14. WHERE절의 상수값, Bind Variable 만 다른 경우도 SQL Parsing 결과 공유 CURSOR_SHARING SELECT sql_text, version_count, loads, invalidations, parse_calls, sorts FROM V$SQLAREA WHERE sql_text LIKE 'SELECT * FROM SCOTT.DEPT WHERE DEPTNO = %' AND command_type = 3 ORDER BY parse_calls DESC;  검사용 SQL ALTER SYSTEM SET CURSOR_SHARING = [ EXACT | SIMILAR | FORCE ] SET value EXACT 모든 조건이 일치해야만 공유 SIMILAR 바인드 변수가 다른 값을 가지더라도 공유 FORCE 상수가 다르더라도 공유