DBA Archives
Oracle / SQL 튜닝 패턴

EXISTS 서브쿼리에 NO_UNNEST + PUSH_SUBQ 적용

시간대별 매출현황 화면 조회 쿼리 튜닝 기록입니다. 결론은 EXISTS 서브쿼리에 NO_UNNEST + PUSH_SUBQ 두 줄을 얹어 응답시간 18.98초 (-75.3%), 논리 읽기 8,124K → 2,327K blocks (-71.4%), 옵티마이저 cost 5,560K → 95,963 (≈ 58배 감소) 로 마무리했습니다. 본 케이스는...

MySQL / InnoDB 내부

MySQL Bug #120021 — IN-list 샘플링 파라미터 제안

2026년 3월 MySQL Optimizer Team 에 제출한 Bug #120021 (eq_range_index_dive_sample_count 파라미터) 제안한 배경, 구현, 리뷰 과정을 정리한 글입니다. 패치는 8.4.x trunk 기준이며, MySQL Optimizer Team Lead 의 정식 피드백을 받아 Verified 상태로 분류된 시점...

MySQL / 운영

pt-osc Issue in MariaDB v10.11.7

AWS RDS MariaDB 10.11.7 환경에서 pt-online-schema-change 가 INSERT 의 일부를 누락시키는 사고가 있었고, MariaDB JIRA MDEV-34438 로 upstream confirmed 된 trigger 재실행 버그였습니다. 단계적으로 이슈를 좁혀나간 진단 흐름을 되새겨 보았고, 그 과정에서 들어간 코드 수정...

Cloud DB & Infra / EKS & 컨테이너

SERIESEC2 위의 K8s 배포 자동화 — Part 3: 부트스트랩 스크립트 부연설명

들어가며 EC2 부팅 후 실행되는 셸 스크립트 4개(init_v2.sh, master_v2.sh, worker_v2.sh, final_v2.sh)와 Flannel 매니페스트(kube-flannel.yml)의 동작을 설명합니다. 스크립트 실행 순서 EC2 부팅 (UserData) │ ├── [모든 노드] init_v2.sh OS ...

Cloud DB & Infra / EKS & 컨테이너

SERIESEC2 위의 K8s 배포 자동화 — Part 2: CloudFormation 템플릿

들어가며 bjh-k8s_modified_v2.yaml 한 파일로 어떻게 VPC부터 K8s Ready 상태까지 자동으로 올라오는지를 분석합니다. 각 설계 결정의 이유와 함께 전체 CloudFormation 명령어 레퍼런스를 정리합니다. 템플릿 전체 구조 bjh-k8s_modified_v2.yaml ├── Parameters 사용자 입력...

MySQL / 운영

Amazon RDS Proxy - Aurora MySQL 가용성테스트

2022년 11월 수행한 테스트를 기반으로 정리한 내용입니다. Amazon Aurora MySQL V2 환경(ap-northeast-2, db.t3.medium × 4 리더 인스턴스)에서 측정한 케이스입니다. 개요 Amazon RDS 프록시를 사용하면 애플리케이션이 데이터베이스 연결을 Pooling 하고 공유하도록 허용하여 확장 기능을 향상할 수...

Cloud DB & Infra / EKS & 컨테이너

SERIESEC2 위의 K8s 배포 자동화 — Part 1: 아키텍처와 사전 준비

들어가며 CloudNativePG(CNPG)와 MySQL 오퍼레이터를 쿠버네티스 위에서 테스트하려면 클러스터가 먼저 필요합니다. EKS를 사용하면 편리하지만 클러스터 자체에 시간당 $0.10(월 약 $72)이 청구되고, 노드가 인터넷에 나가려면 NAT Gateway가 추가로 시간당 $0.045씩 더해집니다. 테스트 목적으로 띄웠다 내리는 환경이라면 ...

SQL Tuning / 케이스 스터디

SUM 집계를 SUM OVER 분석함수로 변환

메인쿼리와 inline view 가 같은 테이블을 같은 구간으로 두 번 ACCESS 하는 패턴은 분석함수 SUM(SUM(...)) OVER (PARTITION BY ...) 로 1회 액세스로 통합할 수 있습니다. 옵티마이저가 자동으로 해 주는 변환이 아니라 SQL 을 다시 써야 하는 패턴입니다. 핵심 정리 같은 데이터를 두 번 ACCESS ...

SQL Tuning / 케이스 스터디

분석함수 — MAX 집계를 RANK OVER 함수로 변환

같은 테이블을 MAX 집계용으로 한 번, 상세 조회용으로 한 번 두 번 access 하는 패턴은 분석함수 RANK() OVER 로 한 번의 access 로 풀 수 있습니다. 사용하기에 앞서 PGA Sorting 부하 등 Trade off 에 대한 검토가 필요합니다. 핵심 정리 변환의 본질: WHERE (key, max_col) IN (SEL...

SQL Tuning / 케이스 스터디

View Merging 으로 얻는 이익

View Merging 은 inline view / view 를 메인 쿼리와 한 쿼리블록으로 통합하는 옵티마이저 변환입니다. View 가 사라지면 옵티마이저는 더 풍부한 후속 변환 (조건절 전이, JPPD, view merging 자체로 가능해진 join 제거 등) 을 적용할 수 있어, 동일한 쿼리도 훨씬 효율적인 plan 으로 풀립니다. 핵심 정...