전체 글 (144) 썸네일형 리스트형 [DB] 2PL(Two-Phase Locking) 개념 및 필요성 / 교착 상태(deadlock) 📌 목차1. 2PL•1.1 2PL의 개념•1.2 2PL의 필요성2. 2PL 실습•2.1 직렬 스케줄에 따라 트랜잭션이 실행된 결과•2.2 직렬 가능성이 보장되지 않는 트랜잭션 스케줄•2.3 직렬 가능성이 보장되는 트랜잭션 스케줄•2.4 교착 상태가 발생하는 트랜잭션 스케줄📌 1. 2PL1.1 2PL의 개념•2PL(Two-Phase Locking): 트랜잭션이 락을 획득하고 해제하는 시점을 2단계로 나누어 실행하는 기법•- 확장 단계(growing phase): 트랜잭션이 락을 획득만 하고 이미 획득한 락을 해제하지 않는 단계•- 수축 단계(shrinking phase): 트랜잭션이 락을 해제만 하고 새로운 락을 획득하지 않는 단계 1.2 2PL의 필요성•락을 사용할 경우, 트랜잭션들이 같은 데이터에 .. [DB] 갱신 손실(lost update) / 락 기반 동시성 제어 / 락 유형 및 호환 여부 - S-lock, X-lock 📌 목차1. 동시성 제어•1.1 동시성 제어의 개념과 필요성•1.2 갱신 손실 발생2. 락 기반 동시성 제어•2.1 락의 개념과 필요성•2.2 갱신 손실 방지3. 락의 특성•3.1 락의 유형•3.2 락의 호환 여부📌 1. 동시성 제어1.1 동시성 제어의 개념과 필요성•동시성 제어(concurrency control): 여러 트랜잭션이 동시에 실행될 때•DB의 일관성을 유지하기 위해 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능•갱신 손실(lost update): 한 트랜잭션의 갱신이 다른 트랜잭션에 의해 분실되는 현상•💡 락 기반 동시성 제어의 필요성을 이해하기 위해 갱신 손실을 기준으로 설명을 작성했습니다. •동시성을 제어하지 않은 트랜잭션들이 쓰기 작업을 위해 같은 데이터에 동시 접근할 경우.. [DB] 격리 수준(isolation level) / 이상 현상 - dirty read, non-repeatable read, phantom read 📌 목차1. 트랜잭션 격리 수준•1.1 격리 수준의 개념•1.2 표준 격리 수준2. 트랜잭션 격리 수준 실습•2.1 READ UNCOMMITTED - dirty read 현상•2.2 READ COMMITTED - non-repeatable read 현상•2.3 REPEATABLE READ - phantom read 현상•2.4 SERIALIZABLE📌 1. 트랜잭션 격리 수준1.1 격리 수준의 개념•격리 수준(isolation level): 데이터 정합성과 동시성 사이의 트레이드 오프를 조절하는 설정•트랜잭션의 ACID 성질 중 하나인 격리성은 여러 트랜잭션이 동시에 실행될 때•각 트랜잭션이 다른 트랜잭션의 중간 결과에 간섭할 수 없도록 보장하는 매우 중요한 성질임•이때 DBMS는 트랜잭션 간의 간섭.. [DB] 트랜잭션 개념 및 제어 / ACID(Atomicity, Consistency, Isolation, Durability) 성질 📌 목차1. 트랜잭션•1.1 트랜잭션의 개념•1.2 트랜잭션의 제어2. ACID 성질•2.1 원자성(atomicity)•2.2 일관성(consistency)•2.3 격리성(isolation)•2.4 지속성(durability)📌 1. 트랜잭션1.1 트랜잭션의 개념•트랜잭션(transaction): DBMS에서 데이터를 다루는 논리적인 작업 단위•트랜잭션은 데이터를 다루는 여러 작업을 논리적으로 쪼갤 수 없는 하나의 묶음으로 처리하기 위해 필요함•예) 계좌이체 트랜잭션의 경우, 출금과 입금을 위한 2개의 UPDATE 문으로 구성됨 1.2 트랜잭션의 제어•트랜잭션은 다음 명령어를 통해 제어할 수 있음•- START TRANSACTION: 새로운 트랜잭션을 시작함•- COMMIT: 트랜잭션의 변경 사항을 .. [DB] 복합 인덱스 원칙 / 인덱스 단점 / 인덱스 생성 및 실무 가이드라인 📌 목차1. 복합 인덱스 1.1. 복합 인덱스 원칙Ⅰ 1.2. 복합 인덱스 원칙Ⅱ 1.3. 복합 인덱스 원칙Ⅲ2. 인덱스의 단점3. 인덱스 생성 가이드라인4. 인덱스 실무 가이드라인📌 1. 복합 인덱스•두 개 이상의 컬럼으로 구성된 인덱스를 복합 인덱스(composite index) 또는 다중 컬럼 인덱스(multi-column index)라고 함•실제 서비스 운영 환경에서는 여러 조건을 조합해 데이터를 검색하는 경우가 대부분임•이때 다중 조건 쿼리의 성능을 최적화하기 위해 복합 인덱스를 사용함 •복합 인덱스를 가장 효율적으로 설계하고 사용하기 위해서는 컬럼 순서와 관련된 다음 3가지 원칙에 유의해야 함•1.1. 복합 인덱스는 인덱스 왼쪽 접두어 규칙(index left-prefix .. [DB] 옵티마이저의 인덱스 선택 - 순차 및 랜덤 I/O, 인덱스 손익분기점 / 커버링 인덱스 📌 목차1. 옵티마이저의 인덱스 선택 1.1. 순차 및 랜덤 I/O 1.2. 인덱스 손익분기점2. 커버링 인덱스 2.1. 커버링 인덱스란? 2.2. 커버링 인덱스 적용 가이드라인 2.3. 커버링 인덱스 적용 2.3.1. 커버링 인덱스 적용 전 - 일반 인덱스 사용 2.3.2. 커버링 인덱스 적용 후 - 인덱스 컬럼만 조회 2.3.3. 커버링 인덱스 적용 후 - 커버링 인덱스 생성📌 1. 옵티마이저의 인덱스 선택1.1. 순차 및 랜덤 I/O(HDD 기준)•테이블 전체를 스캔하는 풀 테이블 스캔의 경우, •디스크 헤드가 물리적으로 거의 이동하지 않고 연속된 데이터를 읽는 순차 I/O(sequential I/O)가 발생함•반면 인덱스를 통해 .. [DB] 실행 계획 분석 / 인덱스 사용 - 동등 비교, 범위 검색, 정렬 📌 목차1. 실행 계획 1.1. 실행 계획이란? 1.2. 실행 계획 주요 항목2. 인덱스 사용 2.1. 동등 비교 2.2. 범위 검색 2.3. 정렬 2.3.1. 인덱스 사용 전 2.3.2. 인덱스 사용 후 - 오름차순 정렬 2.3.3. 인덱스 사용 후 - 내림차순 정렬(역방향 스캔) 2.3.4. 인덱스 사용 후 - 내림차순 인덱스📌 1. 실행 계획1.1. 실행 계획이란?•DB에는 쿼리를 어떤 방식으로 최적화해서 실행할지 계획하는 옵티마이저(optimizer) 기능이 있음•옵티마이저는 내부 통계 정보를 기반으로 인덱스를 사용할지, 사용한다면 어떤 인덱스를 사용할지 등의 계획을 수립함•이때 옵티마이저가 수립한 쿼리 실행 방식을 .. [DB] 인덱스 개념 및 필요성 / 인덱스 구현 - 트리 자료 구조 / 인덱스 실습 - 생성, 조회, 삭제 📌 목차0. 시작하기 전2. 인덱스 2.1. 인덱스란? 2.2. 인덱스의 필요성3. 인덱스 구현 - 트리 자료 구조(TBU) 3.1. 이진 탐색 트리란? 3.2. 이진 탐색 트리의 성능4. 인덱스 실습 4.1. 인덱스 생성 4.2. 인덱스 조회 4.3. 인덱스 삭제📌 0. 시작하기 전•김영한님의 실전 데이터베이스 - 기본편 강의를 학습한 후, 핵심 내용을 정리했습니다.•인덱스 구현과 관련된 세부 사항은 추후 심화 강의가 오픈되면 학습 후 보충할 예정입니다.•피드백은 언제나 환영입니다. 🙌🏻📌 1. 인덱스1.1. 인덱스란?•인덱스(index)는 DB의 검색 성능을 향상시키는 특수한 자료 구조에 해당함•인덱스는 특정 컬럼(들)을 기준으로 정렬된 값과 원본 데이터.. 이전 1 2 3 4 ··· 18 다음