728x90
반응형

Recent Posting

more

Oracle DB 성능 튜닝 공부 DAY5 — 서브쿼리와 Query Transformation 이해하기

Oracle DB 성능 튜닝 DAY5에서는 서브쿼리를 Oracle이 내부적으로 어떻게 처리하고 최적화하는지를 중심으로 공부했다.SQL을 작성하다 보면 IN, EXISTS, 스칼라 서브쿼리, 인라인 뷰, WITH절 등을 자주 사용한다.그런데 우리가 작성한 SQL의 형태와 Oracle이 실제로 실행하는 형태가 항상 같은 것은 아니다.Oracle Optimizer는 필요에 따라 SQL을 내부적으로 변환하는 Query Transformation을 수행한다.이번 DAY5에서는 이러한 변환이 실행계획에 어떤 영향을 주는지 직접 비교해봤다.1. 날짜 데이터와 결합 인덱스먼저 날짜 데이터를 이용한 테이블을 생성했다.CREATE TABLE TDT ASSELECT DT,TO_CHAR(DT,'YYYY') AS YYYY,TO..

Database 2026.09.09 0

Oracle DB 성능 튜닝 공부 DAY4 — 조인 방식과 실행계획 최적화

Oracle DB 성능 튜닝 DAY4에서는 지금까지 배웠던 인덱스와 실행계획을 바탕으로 조인을 어떻게 효율적으로 수행할 것인가를 공부했다.특히 이번에는 단순히 JOIN 문법을 공부하는 것이 아니라,어떤 테이블을 먼저 읽을 것인지Nested Loops와 Hash Join 중 무엇을 사용할 것인지인덱스가 조인 성능에 어떤 영향을 주는지옵티마이저가 실행 중 계획을 변경할 수 있는지불필요한 테이블 접근 자체를 제거할 수 있는지를 실행계획을 통해 확인했다.1. 힌트를 작성했는데 왜 적용되지 않을까?다음 SQL을 보면 EMP 테이블의 인덱스를 사용하도록 힌트를 작성했다. SELECT /*+ INDEX(EMP EMP_HIREDATE_IX) */EMPNO, ENAME, HIREDATEFROM EMP EWHERE HIR..

Database 2026.09.07 0

Oracle DB 성능 튜닝 공부 DAY3 — 인덱스부터 PGA, 테이블 액세스 최적화까지

Oracle DB 성능 튜닝 교육 DAY3에서는 DAY2에서 배웠던 실행계획과 인덱스에서 조금 더 깊게 들어가 실제로 SQL 성능을 결정하는 요소들을 공부했다.이번 교육의 핵심은 크게 세 가지였다.인덱스를 사용한다고 무조건 빠른 것은 아니다.메모리가 부족하면 SORT나 HASH 연산에서 디스크 I/O가 발생한다.SQL 튜닝에서는 결국 불필요한 테이블 접근과 작업량을 얼마나 줄이느냐가 중요하다.이번 글에서는 DAY3에서 공부한 내용을 정리해본다.1. 인덱스와 ROWID의 관계먼저 ROWID의 구조부터 확인했다.SELECT employee_id, last_name, rowid, DBMS_ROWID.ROWID_RELATIVE_FNO(rowid) AS FILE_NO, ..

Database 2026.09.05 1

Oracle DB 성능 튜닝 공부 DAY2 — 실행계획과 인덱스 제대로 이해하기

Oracle DB 성능 튜닝 교육 DAY2에서는 전날 배웠던 옵티마이저와 실행계획 개념에서 한 단계 더 들어가 실제 실행계획을 확인하고 인덱스가 어떻게 사용되는지를 공부했다.특히 이번 교육에서 중요하게 느꼈던 부분은 단순히"인덱스를 만들면 SQL이 빨라진다."가 아니라는 점이었다.같은 SQL이라도 데이터의 분포나 조건에 따라 TABLE FULL SCAN이 유리할 수도 있고 INDEX RANGE SCAN이 유리할 수도 있다.또한 WHERE절을 어떻게 작성하느냐에 따라 이미 존재하는 인덱스를 제대로 활용하지 못할 수도 있다.이번 글에서는 DAY2에서 공부한 내용을 정리해본다.1. 실행계획(Execution Plan)이란?SQL을 작성하면 Oracle의 옵티마이저가 데이터를 어떤 방법으로 가져올 것인지 결정한..

Database 2026.09.03 0

GROUP BY 때문에 1:N 관계가 달라져 보이는 이유

GROUP BY 때문에 1:N 관계가 달라져 보이는 이유SQL을 작성하다 보면 부모 테이블과 자식 테이블을 JOIN했는데, 예상했던 것보다 조회 결과가 여러 행으로 나오는 경우가 있다.특히 GROUP BY가 포함된 SQL을 보면 이런 생각이 들 수 있다."원래 부모 테이블이 기준인데 왜 결과에서는 한 건이 여러 행으로 나오는 거지?"이때 중요한 것은 테이블의 실제 관계와 SQL 조회 결과의 집계 단위를 구분하는 것이다.예제로 간단하게 살펴보기구매 시스템에 다음과 같은 두 테이블이 있다고 가정해보자.ORDER_MASTER : 구매요청서 정보ORDER_ITEM : 구매요청서에 포함된 물품 정보테이블 관계는 다음과 같다.ORDER_MASTER구매요청서 1건 │ ├── ORDER_ITEM 물품..

Hands-onDevelopment 2026.09.01 2

Oracle SQL 튜닝 공부 DAY1 - 데이터베이스 구조부터 Parse와 실행계획까지

Oracle SQL 튜닝 교육 첫날에는 Oracle 데이터베이스의 기본 구조, SGA와 PGA, SQL 문장 처리 과정, Hard Parse와 Bind Variable, 그리고 Optimizer와 실행계획까지 전체적인 흐름을 공부했다.SQL 튜닝을 공부하기 전에 먼저 Oracle 내부에서 SQL이 어떤 과정을 거쳐 실행되는지 이해하는 것이 중요하다.1. Oracle 데이터베이스 서버 구조Oracle 데이터베이스 서버는 크게 다음 두 부분으로 구성된다.Oracle Database Server = Instance + Database여기서 Instance는 다시 다음과 같이 구성된다.SGA(System Global Area)Background ProcessSGA는 여러 프로세스가 함께 사용하는 공유 메모리 영..

Database 2026.09.01 1

민원 들어오기 전에 AI가 먼저 찾는다…화성시가 시작한 ‘예측형 행정’

지금까지 행정기관의 민원 처리는 대부분 시민의 신고에서 시작됐습니다.도로가 막히거나 시설물이 파손되고, 불법투기나 안전 문제가 발생하면 시민이 신고하고 담당 부서가 이를 확인한 뒤 조치하는 방식입니다.하지만 인공지능(AI)과 도시데이터가 결합하면서 이러한 행정 방식에도 변화가 나타나고 있습니다.화성특례시는 AI와 도시데이터를 활용해 시민이 민원을 제기하기 전에 도시의 이상 징후를 발견하고 대응하는 ‘문제해결형 도시데이터플랫폼’ 구축에 나섰습니다.행정이 민원을 기다리는 방식에서 데이터를 기반으로 문제를 먼저 찾아가는 방식으로 변화하는 것입니다.흩어진 도시 데이터를 하나로 연결도시에는 매일 엄청난 양의 데이터가 발생합니다.교통량, 인구 이동, 안전 신고, 방범 정보, 재난 데이터, 부동산 정보, 미세먼지와 ..

IT 2026.08.29 1
728x90
반응형