MYSQL 3

[MySQL] 파티셔닝, 샤딩, 레플리케이션

파티셔닝 (Partitioning)파티셔닝은 거대한 테이블이나 인덱스를 관리하기 쉬운 작은 단위로 물리적(더 작은 테이블)으로 분할하는 기술을 말합니다.데이터가 아무리 커져도 성능을 유지하고 가용성을 높이기 위한 필수적인 데이터베이스 설계 전략입니다. 파티셔닝의 목적성능 향상 : 특정 범위의 데이터만 조회할 때, 나머지 파티션은 무시하고 필요한 파티션만 스캔하므로 응답 속도가 빠릅니다.관리 용이성 : 오래된 데이터를 삭제할 때 DELETE 문으로 수백만 건을 지우는 대신, 해당 파티션만 DROP 하거나 TRUNCATE 할 수 있습니다.가용성 향상 : 전체 데이터가 한 곳에 있지 않기 때문에, 특정 파티션의 파일이 손상되어도 다른 파티션의 서비스는 유지될 수 있습니다.백업 및 복구 : 파티션 단위로 독립적..

DataBase 2026.01.05

[SQL] PK(기본키)는 어떤 값이 좋을까? (auto_increment, uuid)

데이터베이스에 테이블을 추가하는 작업을 해야한다고 가정해봅시다. 테이블의 설계에 따라 ID 값이 필요한 상황입니다.이 때, ID값으로 어떤 값을 사용하는 것이 가장 이상적일까요? 간단히 필요한 개념을 먼저 살펴보고 알아보도록 하겠습니다.SQL에서 ID 란?ID는 Identifier, 식별자라는 의미로 SQL에서는 데이터베이스 내의 각 행(레코드)을 고유하게 식별하는 값을 의미합니다.이 ID는 다음과 같은 특징을 가집니다.고유 식별자: 각 테이블의 행(row)은 고유한 ID를 가진다.관계 형성: 테이블에서 다른 테이블의 ID를 참조하여 데이터 간의 관계를 설정할 수 있다.데이터 무결성: 고유한 ID를 통해 데이터의 중복을 막고, 각 데이터가 명확하게 식별될 수 있도록 한다.각 행을 식별하는 어떠한 값도 I..

DataBase 2025.11.25

[SQL] 3. 인덱스(Index)란?

인덱스(Index)란?책에서 특정 단어를 찾을 때, 페이지를 처음부터 끝까지 넘기면 상당히 오래 걸린다. 하지만 책 뒤에 있는 인덱스를 보면 해당 단어가 있는 페이지 번호(위치)를 바로 알 수 있다.데이터베이스에서도 마찬가지로 테이블이 커질수록 WHERE/ ORDER BY/ JOIN 작업은 테이블 풀스캔( O(N) )이면 I/O 지옥으로 지연과 락이 많아질 수 있다. 이 때 인덱스를 사용하면 원하는 데이터의 위치를 먼저 찾아서 빠르게 접근할 수 있게 된다.인덱스를 사용하면 정렬된 데이터 구조(대부분 B+Tree), 빠른 주소록(해시)을 사용해 O(logN) 또는 평균 O(1)에 가까운 탐색 속도를 제공할 수 있다. 인덱스를 통해 데이터 베이스 조회 시 읽기 경로 단축 + 불필요한 페이지 접근 제거 + 정..

DataBase 2025.08.14