Clustered Index vs Non-Clustered Index — 구조와 차이 정리
데이터베이스 인덱스는 크게 Clustered Index와 Non-Clustered Index로 나뉜다. 두 인덱스는 “데이터를 어떻게 저장하고 접근하는가”에서 구조적인 차이가 있다. 이 차이를 이해하면 조회 ...
성능 검색 결과: 21개
데이터베이스 인덱스는 크게 Clustered Index와 Non-Clustered Index로 나뉜다. 두 인덱스는 “데이터를 어떻게 저장하고 접근하는가”에서 구조적인 차이가 있다. 이 차이를 이해하면 조회 ...
MySQL에서 사용하는 대부분의 인덱스는 B-Tree 구조로 이루어져 있다. B-Tree는 대용량 데이터에서 빠르게 값을 찾기 위해 설계된 트리 형태의 자료 구조다. 테이블 전체를 순차적으로 검색하면 데이터가...
MySQL에서 가장 많이 사용하는 페이징 방식은 LIMIT OFFSET 구조다. 하지만 데이터가 많아질수록 이 방식은 점점 느려지는 문제가 있다. 특히 페이지 번호가 커질수록 쿼리 속도는 급격히 떨어진다. ...
S3를 “그냥 파일 저장소”처럼 쓰기 시작하면 권한 설정에서 사고가 난다. S3는 기본적으로 퍼블릭 차단을 전제로 설계하고, 접근은 IAM 권한으로 통제하는 방식이 안전하다. S3와 IAM을 함께 쓴다는 것은...
데이터가 수천만 건을 넘어가면 단일 테이블 구조는 점점 한계에 부딪힌다. 인덱스 크기가 커지고, 백업·복구 시간이 길어지며, 특정 쿼리의 응답 속도가 급격히 저하된다. 이 시점에서 고려하는 전략이 파티셔닝(P...
트랜잭션(Transaction)은 하나의 논리적 작업 단위를 보장하기 위한 DB 기능이다. 여러 개의 SQL이 하나의 작업처럼 처리되며, 전부 성공하거나 전부 실패해야 한다. 결제, 정산, 포인트 차감처럼 데...
서버 CPU 사용률이 높다는 것은 단순히 “바쁘다”는 의미가 아니다. 정상 트래픽인지, 비정상 반복 연산인지, 특정 프로세스 폭주인지 구분해야 한다. 무작정 서버 스펙을 올리는 것은 해결이 아니다. CPU가 왜 올...
PHP는 비교적 빠르게 기능을 만들 수 있는 언어지만, 프로젝트가 커질수록 구조가 무너지기 쉽다. 초기에 패턴과 책임 분리를 정해 두지 않으면, 기능 추가와 수정이 어려운 형태로 굳어지기 때문이다. 실무에서는...
성능 튜닝은 코드를 많이 바꾸는 작업이 아니라 같은 조건에서 병목을 측정하고 가장 작은 변경의 효과를 확인하는 과정이다. 이 글은 MariaDB 10.11의 별도 실습 DB에서 날짜 조건 쿼리를 비교하는 절차를 다룬...
MySQL에서 “키(Key)”는 단순히 검색 속도를 높이기 위한 인덱스 개념을 넘는다. 데이터의 무결성을 보장하고, 테이블 간 관계를 정의하며, 중복을 방지하는 핵심 제약 조건이다. PRIMARY KEY, U...