태그: 트랜잭션
6편
-
데이터베이스 내부 동작: ACID 구현, 격리 수준, 인덱스 구조와 쿼리 최적화
관계형 데이터베이스가 WAL, 버퍼 풀, 잠금으로 ACID를 구현하는 방식과 네 가지 격리 수준에서 생기는 이상 현상, MVCC 스냅샷을 설명합니다. B-tree와 해시 인덱스의 차이, 옵티마이저 통계와 실행 계획 읽기, 연결 풀과 복제 운영 패턴도 다룹니다.
-
데이터베이스 트랜잭션 심화 — MVCC·2PL·데드락·WAL·실무 패턴
트랜잭션이 ACID를 어떻게 보장하는지 엔진 내부 관점에서 정리합니다. 격리 수준과 이상 현상, MVCC 가시성과 VACUUM, 2단계 락킹, 데드락 탐지와 희생자 선택, WAL과 체크포인트, 갱신 손실을 막는 SQL 패턴을 PostgreSQL과 InnoDB 예로 설명합니다.
-
C++로 작은 DB 엔진 만들기: Pager·B-Tree 저장 엔진, SQL 파서, 실행기, WAL 트랜잭션
페이지 기반 Pager, B-Tree 인덱스, SQL 토크나이저/파서, 실행기, WAL 트랜잭션까지 간단한 DB 엔진의 핵심 구성 요소를 C++로 구현합니다. 풀 스캔 병목, 부분 커밋, WAL fsync 누락 같은 실전 문제 시나리오를 함께 다룹니다.
-
C++ 데이터베이스 엔진 구현: B-Tree 인덱스, WAL, MVCC, SQL 파서와 실행 계획
SQLite처럼 작은 DB 엔진을 만들며 페이지 기반 저장, B-Tree 인덱스 노드, WAL로 트랜잭션을 복구하는 원리, 간단한 SQL 파서와 실행 계획을 C++로 구현합니다. 잘못된 페이지 읽기, WAL 복구 후 데이터 손실 같은 에러와 그룹 커밋 등 성능 팁도 다룹니다.
-
C++에서 PostgreSQL 연동: libpq vs libpqxx, 트랜잭션, Prepared Statement, JSONB와 연결 풀
C++ PostgreSQL 연동 정리. C 기반 공식 라이브러리 libpq와 Modern C++ 래퍼 libpqxx 비교, ACID 트랜잭션, Prepared Statement로 SQL 인젝션 방지, 연결 풀, JSONB·Full-Text Search 활용을 다룹니다.
-
C++ Kafka 고급 활용 | librdkafka·Exactly-Once Semantics (EOS)·트랜잭션·스트림 처리
librdkafka로 C++ 스트림 파이프라인을 만들 때 메시지를 중복·유실 없이 처리하는 방법을 다룹니다. 멱등 프로듀서, 트랜잭션 API와 read_committed 컨슈머, 리밸런스 뒤 중복 처리, Queue full·Not leader 같은 에러 대응을 예제로 설명합니다.