컴퓨터 과학/데이터베이스
💻 [데이터베이스] 실무에서 직접 느낀 쿼리 튜닝 팁 정리
2025.05.10
🎯 개요실무에서 데이터를 다루다 보면쿼리가 느려서 기능이 제대로 안 되는 순간을 자주 겪게 됩니다.저 역시 비슷한 상황을 여러 번 마주하면서단순한 WHERE절 수정이 아닌,DB 내부 동작을 기준으로 튜닝하는 감각을 조금씩 익혀가고 있습니다.이번 글은“직접 느려본 쿼리, 그리고 고치면서 배운 것”들을정리해보는 자리입니다.🔍 쿼리 튜닝이 왜 중요한가?✅ 느린 쿼리는 곧 사용자 경험 하락✅ 복잡한 SQL 구조는 성능 저하 + 유지보수 난이도 상승✅ 단 한 줄의 WHERE절, JOIN 조건이 시스템 전체 병목의 원인이 될 수 있음✅ 인덱스가 있어도 사용되지 않거나, 비효율적으로 작동하면 더 큰 문제📋 자주 사용하는 튜닝 전략 5가지전략설명1. 불필요한 SELECT 제거SELECT * 대신 필요한 컬럼만 선..
컴퓨터 과학/데이터베이스
💻 [데이터베이스] ORM과 JPA 제대로 이해하기
2025.05.09
🎯 개요실무에서 JPA와 MyBatis를 함께 사용하는 구조에 익숙해졌지만,그동안은 라이브러리처럼 단순히 사용하는 데에 초점이 맞춰져 있었습니다.이번 글에서는ORM의 근본 개념부터 JPA의 동작 원리까지정확하게 이해하고,단순 사용을 넘어서 “왜 그렇게 동작하는가”까지 통찰하는 것을 목표로 합니다.🧠 ORM이란?✅ ORM (Object-Relational Mapping): 객체(Object)와 관계형 데이터(Relational DB)를 자동으로 매핑해주는 기술입니다.핵심 개념설명객체지향 코드 ↔ 테이블 매핑Java 클래스 → 테이블, 필드 → 컬럼SQL 직접 작성 최소화SELECT, INSERT 등을 자동 생성생산성 향상반복적인 SQL 작성 제거, 유지보수 간편화 📌 쉽게 말하면:"Java 객체를 그..
컴퓨터 과학/데이터베이스
💻 [데이터베이스] 락(Lock)과 트랜잭션 격리 수준의 관계
2025.05.09
🎯 개요이 글은 이전에 정리한👉 [데이터베이스] 트랜잭션 격리 수준과 직접적으로 연결됩니다.앞에서는 격리 수준이어떤 현상을 막아주는지 중심으로 설명했다면,이번에는 DB가 실제로 그 약속을 어떻게 지키는지 — 즉 “락”을 통해 구현하는 방식을 다루는 글입니다.🧠 락(Lock)이란?✅ 락은 DB에서 동시성 제어를 위해 사용하는 메커니즘입니다.트랜잭션이 데이터를 읽거나 쓸 때,다른 트랜잭션이 그 데이터에 접근하지 못하도록 막는 장치입니다.→ 락을 통해 격리 수준(Isolation Level)의 효과가 실제로 구현됩니다.📋 락의 종류 정리✅ 기본 락종류설명사용 목적S-Lock (Shared Lock)읽기 락: 여러 트랜잭션이 읽기 가능SELECTX-Lock (Exclusive Lock)쓰기 락: 한 트랜..
컴퓨터 과학/데이터베이스
💻 [데이터베이스] 인덱스 원리와 동작 구조 정리
2025.05.09
🎯 개요인덱스(Index)는데이터베이스에서 원하는 데이터를 빠르게 찾기 위한 자료구조입니다.책의 목차처럼,전체 데이터를 다 훑지 않고 필요한 정보를 빠르게 접근할 수 있도록 도와줍니다.🧠 인덱스란?✅ 인덱스란?특정 컬럼의 값을 정렬된 상태로 저장하고,검색 시 해당 값을 빠르게 찾을 수 있도록 지원하는 구조입니다.✅ 인덱스를 사용하면WHERE, JOIN, ORDER BY 성능이 크게 향상됩니다.다만 쓰기 성능(INSERT/UPDATE/DELETE)에는 영향이 있습니다.📋 인덱스 동작 구조 (B+Tree 기반)단계설명1검색 조건이 붙은 SQL 실행 (ex. WHERE user_id = 100)2인덱스 트리(B+Tree)를 따라 탐색 시작3루트 노드 → 중간 노드 → 리프 노드 순으로 이동4리프 노드에 ..
컴퓨터 과학/데이터베이스
💻 [데이터베이스] 정규화 vs 비정규화 차이 정리
2025.05.09
🎯 개요데이터베이스를 설계할 때,데이터 중복 제거, 무결성 유지, 성능 최적화를 위해정규화와 비정규화 전략을 균형 있게 사용하는 것이 중요합니다.🧠 정규화란?✅ 정규화(Normalization)데이터 중복을 제거하고,테이블을 잘게 나눠 논리적 일관성과 무결성을 유지하는 과정입니다.핵심 목표→ 데이터 중복 방지, 이상현상 제거(삽입/수정/삭제 이상), 무결성 확보🔁 비정규화란?✅ 비정규화(Denormalization)정규화된 테이블을 다시 통합하거나 중복 허용하여조회 성능 향상과 복잡한 JOIN 감소를 목표로 하는 설계 방식입니다.핵심 목표→ 속도 개선, 응답 시간 단축, 복잡한 쿼리 최소화📋 정규화 vs 비정규화 비교 표항목정규화비정규화목적데이터 중복 제거, 무결성 유지조회 성능 향상테이블 수증가..