no image
[Oracle] Wait event - DB File Sequential Read & DB File Scattered Read
DB File Sequential Read  & DB File Scattered Read  DB File Scattered Read 는 DB upgrade 되면서 자주나오는 wait event는 아니다 Disk에서 cache로 데이터 가져올때 발생한다 DB File Sequential Read 자주 보이는 wait eventRandom IO 할때 발생 - 정확하게는 Single Block Storage IO를 수행할 때 발생 - Random IO는 대부분 Single Block   - Index 경유해서 table Random Access 할때 발생 (table 데이터를 순차적으로 접근하는게 아닌 random하게 접근함) 대량 발생 시 OLTP 성능 저하시키는 주 원인이 된다  - OLTP는 대부분 In..
2024.04.28
[Oracle] Wait Event
세부적인 process 처리 할 때마다 wait event가 발생한다 예를 들면 , server process가 parsing을 할 때 Library cache object를 만드는 등의 메모리 할당 같은 모든 개별적인 작업에 wait event가 발생한다. latch 할당, LRU 확인 등을 할때도 wait event 발생한다 Idle 에 따른 Wait Event 유형 Idle Wait Event Timer, Message Sending, Client data waiting등 리소스를 사용하지 않거나 클라이언트로 부터 답변 을 기다려야하는 등의Wait Event (queue에 쌓고 network응답 또는 client 응답을 기다리는 경우 ) DB 성능에 큰 영향을 미치지않는Wait Event ( 그렇다..
2024.04.19
no image
[Oracle] Data Dictionary
Oracle 구성하는 요소의 세부적인 정보를 제공한다 data dictionary로 성능을 분석할 수 있다 성능 모델의 주요 구성 요소 STAT과 WAIT은 겹치지 않으며, SQL, SESSION은 여러 요소에 영행을 줄 수 있다 1. STAT (통계지표) - buffer hit ratio , sort ratio, pga hit ratio , hard parsing, soft parsing 2. WAIT - SQL 처리 시 oracle의 여러 component 에 Access 하게 된다. Access 할때 발생하는 Event는 병목이 생길 경우 wait한다. 3. SQL - IO, wait등을 얼마나 발생시키는지 확인 4. SESSION 5. METRICS (추가적으로 만듬) 6. TIME MODEL (..
2024.04.16
no image
[Oracle]PGA- AMM (Automatic Memory Management)
10g에서 소개된 ASMM (Automatic Shared Memory Management)는 SGA내의 Component들을 자동으로 동적 최적 크기조정을 가능하게 하였고, 11g부터 소개된 AMM은 SGA뿐만 아니라 PGA 크기도 자동으로 동적 최적크기조정을 가능하게 함 SGA_MAX_SIZE까지 SGA_TARGET 이 늘어남? PGA_AGGREGATE_TARGET 도 limit (12c 기능 )까지 늘어날 수 있다 AMM은 자동으로 SGA에서 놀고 있으면 PGA를 늘리고~ 해준다 MEMORY_TARGET = SGA_TARGET + PGA_AGGREGATE_TARGET 으로 설정값으로 가이드로 하고 MAX 까지 늘어날 수 있게 한다 공간이 더 필요하다면 여유공간(MAX - TARGET ) 부터 사용한..
2024.04.15
no image
[Oracle] PGA- Cursor란?
Cursor란? 서버 프로세스내의 Private SQL area를 가리키는 일종의 Handle(Pointer)를 지칭. Cursor는 클라이언트 프로세스가 서버의 데이터를 가져오기 위해 가지는 일종의 Pointer임 1. Client에서 SQL 요청 2. DB storage 또는 buffer cache 에 있는 데이터를 Private SQL Area에 저장후에 Client에게 반환 3. Client 는 요청한 SQL 데이터가 완전히 반환 될때까지 fetch 요청 Client 에선 pl/sql은 cursor 라고 되어있고 , JDBC에선 ResultSet으로 데이터를 받는다 Client에선 Cursor point( =server process의 Memory Pointer)만 움직여서 요청하면 된다 PL/S..
2024.04.15
no image
[Oracle] PGA란?
SGA : 각 server process가 공유하는 메모리공간PGA : 각 server process별로 개별적으로 할당되는 메모리공간 사용 목적다른 server process 와 공유할 내용이 아니며 현재 세션에서만 쓰고 끝낼경우 SQL Work Area정렬, hashing 시 Disk IO를 줄이기 위해 사용 - [Sort Area] SQL이 sort by , group by 처럼 정렬이 필요할 경우 - [Hash Area] hash join Private SQL Area- Cursor & Data Fetch- SQL 바인드 변수 등  PGA를 활용한 SQL 정렬 원리  서론 : 정렬 hashing 할 데이터양이 매우 클 경우 , PGA(memory)를 많이 쓰면서, 다른 프로세스가 사용하지 못할 수..
2024.04.15
no image
[Oracle] Wait Event란? (wait event class 정리 )
오라클의 프로세스가 자원을 접근/사용할때 세부단계별로 상세한 Wait Event 가 발생한다 (자원- cpu,mem, io..) wait event 발생할 떄 마다 기록을 하면 느리지 않나? 싶지만 oracle은 wait event 부분을 굉장히 발전 시켰기에 걱정없다 성능 요소 와 자원 사용현황은 "Wait Event 발생정도"에 따라 모니터링 가능하다 프로세스가 동작할때 세분화하여 개별적인 병목구간에 wait event가 발생 SGA접근. buffer cache , write redo log 등등 oracle 의 wait event는 모두 1100가지가 넘는다 (11g 기준) 주요 wait event 2-30개만 알면 된다 유형 Event 명 내용 Disk iO dbfile Sequential Rea..
2024.03.03
[Oracle] SID vs SERVICE_NAMES vs DB_NAME vs GLOBAL_DBNAME 차이점
• SID: Instance의 고유명을 나타냄. RAC 구조에서 instance가 2개라면, 각 instance 마다 고유의 SID를 가 • SERVICE_NAMES 개념적으로 DB에서 서비스되는 Database 서비스명을 의미, 일반적으로 1개 또는 여러 개의 instance가 결합되어 서비스 가능. RAC구조에서 여러 인스턴스에 대해 service name을 하나로만 설정할 수 있다. (instance 마다 service name 이 달라야하는게 아님 ) + 한 instance에 여러 service name 이 있을 수 있다. listener 가 service 명을 확인하고, 만일 해당 service name이 여러 instance를 가리킬 경우, 부하를 계산해서 접속을 한다 (load balanci..
2024.03.03
OLTP란 Batch Process
RealTime & OLTP란? OLTP(On-Line Transaction Processing) 실시간으로 DB 데이터를 조회/갱신하는 시스템 대부분의 업무시스템 (금융/통신/ERP등조회업무, 쇼핑몰주문, 콘서트예매등) 건당 매우 빠른 수행시간이 생명 (보통0.01 ~1초이하) 빠른 수행시간을 위해 I/O Latency가 중요 실제 업무에서 - 주식거래(코스콤) . 콘서트 예매는 micro second 단위로 나와야한 Batch Processing란? 작업을 모아두었다가 한번에 대량의 데이터 처리 주로, 야간,주말,월말 등 정산/마감/통계 등 대량의 데이터를 일괄처리 대량의 데이터 처리 성능을 위해선 I/O Throughput 이 중요 Tunning 방식 - SQL tunning (70%) - Inst..
2024.02.27