database
-
[MySQL] BNL 조인 제거와 복합 인덱스로 쿼리 성능 개선하기Database 2026. 1. 15. 00:23
1. 문제 상황 (Problem)슬로우 쿼리에 대한 확인을 해달라는 DB팀으로부터 문의가 들어왔습니다.여러 테이블을 조인하는 복합 쿼리에서 데이터량이 늘어남에 따라 응답 속도가 눈에 띄게 느려지는 현상이 발생했습니다. 특히 4개의 테이블(sme1_0, gme1_0, gmmae1_0, gmmne1_0)이 얽히면서 MySQL 옵티마이저가 비효율적인 경로를 선택하고 있었습니다.[문제의 쿼리]2. 원인 분석: EXPLAIN을 통한 디버깅1. EXPLAIN 결과, 성능 저하의 원인은 인덱스를 활용하지 못해 풀 테이블 스캔이 발생했고, 그 결과 Using join buffer (Block Nested Loop) 기반의 비효율적인 조인이 수행했다는 점입니다.gmmne1_0 테이블의 Full Table Scan : 조..
-
DB - 동시성 제어와 lockDatabase 2022. 4. 17. 01:43
Transaction?? transaction(트랜잭션)이란 Database Managemet System에서 데이터를 다루는 논리적인 작업의 단위를 나타낸다. 데이터베이스에 삽입, 수정 등의 작업을 할 때, 여러 개의 작업들을 하나의 transaction으로 묶는다. 예를 들어, A 계좌에서 B 계좌로 돈을 전송한다고 할 때, A 계좌에서 돈을 빼는 작업과 B 계좌에 돈을 넣는 작업이 이루어지게 된다. 이 두 가지의 작업(2개의 SQL 문)을 개별적으로 수행하는 것이 아니라 하나의 트랜잭션으로 묶는다. 그리고 묶인 트랜잭션안에 작업들 중 몇 개만 실행되는 상황은 발생하지 않기 때문에 All or nothing이라 하고 트랜잭션의 성질중 Atomicity를 나타낸다. 동시성 제어(concurrency c..