목록CS지식/데이터베이스 (Database) (27)
변수의 기록

B-Tree와 데이터베이스 인덱스1. B-Tree의 시간 복잡도B-Tree는 self-balancing 트리로, 다음과 같은 시간 복잡도를 가진다:탐색 (Search): O(logₙ N)삽입 (Insert): O(logₙ N)삭제 (Delete): O(logₙ N)여기서 N은 전체 키의 수, n은 자식 노드의 수(= branching factor)이다.즉, 자식 수가 많을수록 log의 밑이 커지므로 깊이가 얕아지고 탐색 횟수가 줄어든다.예시:자식 노드 수가 100일 경우, 1억 개의 키를 탐색할 때 최대 4단계만으로도 검색 가능.2. Secondary Storage의 특징하드디스크(HDD) 또는 SSD와 같은 보조 기억장치(Secondary Storage)는 다음과 같은 특징을 가진다:접근 속도는 RAM..

B-Tree : 구조, 작동 원리, DB에서의 활용1. B-Tree란?B-Tree는 **Binary Search Tree(이진 탐색 트리)**를 일반화한 트리 자료구조입니다. 데이터베이스와 파일 시스템 등, 디스크 기반의 저장 시스템에서 대량의 데이터를 효율적으로 검색, 삽입, 삭제할 수 있도록 설계된 구조입니다.왜 B-Tree가 필요한가?일반 이진 탐색 트리는 삽입 순서에 따라 한쪽으로 치우칠 수 있어 최악의 경우 O(n) 시간복잡도를 가집니다.반면 B-Tree는 항상 균형을 유지하며, 트리의 높이를 제한해 모든 연산이 O(log n) 시간에 수행됩니다.특히 디스크 I/O 비용이 큰 환경에서 적은 횟수의 블록 접근으로 원하는 데이터를 찾을 수 있도록 설계되었습니다.2. B-Tree의 구조기본 구성M차 ..

✅ NoSQL이란?**NoSQL (Not Only SQL)**은 전통적인 관계형 데이터베이스(RDB)와는 다른 방식으로 데이터를 저장하고 처리하는 데이터베이스의 총칭입니다.NoSQL은 다음과 같은 특징을 갖습니다:스키마 유연성 (Flexible Schema)고속의 읽기/쓰기 성능수평적 확장성 (Scale-Out)다양한 데이터 모델 지원 (문서형, 키-값형, 컬럼형, 그래프형 등)📌 NoSQL이 등장하게 된 배경은 빅데이터, 고속 트래픽, 비정형 데이터 증가에 따른 RDB의 한계를 보완하기 위함입니다.✅ RDB vs NoSQL 간단 비교 항목RDB (관계형 DB)NoSQL구조고정 스키마 (정규화)유연한 스키마확장성수직 확장 (Scale-Up)수평 확장 (Scale-Out)트랜잭션ACID 완전 지원대부분 ..

실전에서의 DBCP 설정 최적화: HikariCP 튜닝부터 병목 분석까지1. 개요: DBCP란 무엇인가?DBCP(Database Connection Pooling)는 DB 연결(Connection)을 매번 생성·종료하지 않고 재사용하도록 설계된 구조이다. Java/Spring 환경에서는 HikariCP가 가장 널리 사용되는 DBCP 구현체다.매 요청마다 TCP 3-way/4-way handshake를 반복하는 것은 불필요한 I/O 및 컨텍스트 스위칭 비용을 유발한다.따라서 HikariCP 같은 커넥션 풀을 사용하면 성능 최적화 및 리소스 안정성 확보에 유리하다.2. HikariCP 핵심 설정✅ maxLifetime커넥션 객체의 최대 수명 (ms 단위)유휴 상태일 경우 바로 제거되고, 사용 중일 경우 반환..
DB 커넥션 오버헤드: 단순한 열고 닫기가 아니다1. 커넥션 오버헤드란?DB 커넥션을 열고 닫는 작업은 단순한 네트워크 통신을 넘어서서 다음과 같은 리소스 비용이 발생한다.📌 네트워크 관점open connection: TCP 3-way-handshakeclose connection: TCP 4-way-handshake각 핸드셰이크마다 커널-유저 공간 전환, 시스템 콜 비용, 패킷 송수신 대기가 발생한다.📌 OS 관점 (컨텍스트 스위칭 + IO 대기)DB 작업은 대부분 IO-bound (대기 시간이 많음)요청마다 새로운 스레드 → 스레드 생성/종료 비용OS는 스레드 전환 시 컨텍스트 스위칭 비용이 발생→ CPU 캐시 무효화, 레지스터 백업/복구 비용대기 시간이 많은 DB 작업은 결국 낮은 처리량과 높은..

DBCP (Database Connection Pool) 개념과 HikariCP 설정 상세 정리1. DBCP란?**DBCP (Database Connection Pool)**는 데이터베이스와의 통신에서 Connection 객체를 매번 생성/해제하지 않고, 재사용을 위한 Pool에 담아 관리하는 기법이다.이는 DB 연결 시 발생하는 TCP 핸드셰이크 비용, 리소스 소모, 타임아웃 위험을 줄이기 위한 대표적인 방식이다.2. 기본 개념: TCP 통신과 커넥션 비용DB 통신은 보통 TCP 기반으로 이루어지며, 아래의 과정이 수반된다.Open Connection (3-way-handshake)클라이언트와 서버가 TCP 연결을 성립하는 과정Close Connection (4-way-handshake)연결을 종료하는..

1. 파티셔닝 (Partitioning)1-1. 개념하나의 테이블을 물리적으로 여러 개의 파티션(조각)으로 나누어 관리하는 방식물리적으로는 나뉘지만 논리적으로는 여전히 하나의 테이블처럼 작동합니다. 주로 대용량 테이블의 성능 개선이나 관리 편의성 향상을 위해 사용됩니다.1-2. 종류① 수직 파티셔닝 (Vertical Partitioning)테이블의 **열(Column)**을 기준으로 분할자주 조회되는 컬럼과 잘 사용되지 않는 컬럼을 분리예: ARTICLE 테이블에서 자주 조회 되는 컬럼과 별도 분리, 게시판 내용은 다른 테이블로 (게시판 내용은 용량이 커 부하도 큼)-- 수직 분할 예시ARTICLE(id, title, WRITER_ID 등등) ARTICLE_CONTENT(id, ,content) 1.수..

인덱스(Index) 개념 정리 (Oracle 중심)1. 인덱스란?목적: 테이블에서 조건을 만족하는 튜플을 빠르게 조회하기 위해 사용됨.기본 원리: 테이블과는 별도로 정렬된 구조를 유지하여, 검색 시 테이블을 모두 탐색하는 Full Table Scan을 피할 수 있음.활용 예시: WHERE, ORDER BY, JOIN, GROUP BY, DISTINCT 절 등에서 사용.2. 인덱스의 자동 생성PK (Primary Key): 자동으로 Unique B-Tree 인덱스가 생성됨.Unique 제약 조건: 고유성 보장을 위해 Unique Index 생성됨.Foreign Key: 자동 생성되지 않음. → 외래키로 자주 JOIN하거나 부모 삭제 시 참조 무결성 체크가 빈번할 경우, 수동 인덱스 권장.3. 인덱스의 종류..