데이터베이스에서 인덱스는 검색 성능을 향상시키기 위한 자료구조이다. 인덱스는 책의 목차처럼, 원하는 데이터를 빠르게 찾기 위해 미리 정리해놓은 정보를 말한다. 특히 대량의 데이터 중에서 조건에 맞는 데이터를빠르게 조회해야 할 때 인덱스가 큰 역할을 한다.인덱스는 특정
복합 인덱스는 하나의 인덱스에서 여러 컬럼을 조합하여 더 복잡한 조건을 빠르게 처리해주는 인덱스이다.위 인덱스에서 name을 기준으로 정렬되고, name이 같을 경우 age순으로 정렬된다.복합 인덱스는 특정 조건에서 단일 인덱스보다 훨씬 효율적이기 때문이다.단일 인덱스
보조 인덱스란 기본 키가 아닌 다른 컬럼에 생성한 인덱스를 의미한다.PK로 생성한 인덱스를 클러스터 인덱스라고 한다.나머지 인덱스(UNIQUE, 일반 인덱스 등)는 보조 인덱스라고 한다.MySQL 에서 사용하는 InnoDB 스토리지 엔진을 기준으로 보조 인덱스의 lea
MySQL 5.6 부터 Full-Text Index(이하 전문 검색 인덱스)를 공식적으로 지원한다.그 이전에서는 MyISAM 에서만 지원했기 때문에 InnoDB 사용자들은 Elasticsearch 등 외부 시스템을 사용하였다.지금은 VARCHAR, TEST, CHAR
SQL에서 DML(Data Manipulation Language)은 데이터 조작 언어를 의미하며, 데이터베이스에 저장된 데이터를 조회, 삽입, 수정, 삭제하는데 사용하는 SQL 명령어들의 집합이다. 즉, 테이블구조가 아니라 데이블 안의 데이터를 다루는 명령어들이다.S
TCL(Transaction Control Language)은 데이터베이스에서 트랜잭션(논리적인 작업 단위)를 제어하는데 사용되는 SQL 명령어들이다. 이를 통해 데이터의 일관성과 무결성을 보장할 수 있다.트랜잭션은 하나의 작업 단위로 묶인 여러 SQL 문장들을 말한다
트리거는 INSERT, UPDATE, DELETE 같은 데이터 조작 이벤트가 발생할 때 자동으로 실행되는 DB 객체(프로시저) 입니다.DML 트리거 (Data Manipulation Language Trigger)행 단위 또는 문 단위로 작동.아래에서 설명할 BEFOR
MySQL의 InnoDB 스토리지 엔진은 데이터 무결성을 보장하기 위해 다양한 제약조건을 지원한다.CASCADE는 외래 키의 옵션 중 하나로, 참조하는 부모 레코드가 삭제되거나 업데이트될 때, 자식 레코드에도 같은 작업을 자동으로 수행하도록 지정한다.ON DELETE
CASCADE는 외래 키 제약조건에 의해 자동으로 연쇄 삭제/업데이트를 수행한다.트랜잭션은 여러 SQL 작업을 하나의 논리적인 작업 단위로 묶어서 모두 성공하거나 모두 실패하게 한다CASCADE로 발생한 자동 작업도 트랜잭션 안에 포함되어 롤백이 가능하다.트랜잭션 시작
조인은 두 개 이상의 테이블을 서로 연결하여 의미 있는 결과를 얻기 위한 기술이다. 실무에서 거의 모든 복잡한 쿼리에서 사용된다.여러 개의 테이블에서 데이터를 연결하여, 공통된 컬럼을 기준으로 통합된 결과를 조회하는 기능이다.예를 들어 users테이블과 orders테이
집계 함수는 데이터를 그룹화하고 요약할 때 사용하는 SQL이다. 통계, 리포트, 대시보드, 매출 분석, 사용자 활동 분석 등 거의 모든 실무 쿼리에 사용된다.여러 행의 값을 하나의 결과로 요약하는 함수이다.이 함수들은 일반적으로 GROUP BY와 함께 사용하여 카테고리
상위 → 하위로 이어지는 구조에서 단계별로 합계를 구하는 것을 의미한다.예시로 회사 조직 구조를 생각해보자.회사 전체부서 A팀 A1팀 A1부서 B팀 B1이러한 구조에서 각 팀의 매출을 알고 있을 때 다음과 같은 계층적 합계를 구한다는 것은 아래와 같다.팀별 매출부서별
뷰는 가상 테이블이며, 실제 데이터를 저장하지 않고, SELECT 쿼리 결과를 저장한 것처럼 사용할 수 있는 객체이다. 마치 테이블처럼 사용할 수 있지만, 내부적으로는 정의된 SQL 쿼리가 실행되어결과가 표시된다.물리적으로 데이터를 저장하지 않는다.복잡한 SQL을 단순
서브쿼리는 SQL에서 쿼리 안에 다른 쿼리를 사용하는 것을 말한다. 일반적으로 소괄호 안에 작성되고 메인 쿼리 또는 외부 쿼리에서 그 결과를 사용한다.SELECT, FROM, WHERE, HAVING, JOIN절 등에 포함될 수 있는 중첩된 쿼리이다. 이 쿼리는 메인
데이터 모델링은 소프트웨어 개발에서 매우 중요한 단계로, 현실 세계의 데이터를 컴퓨터 시스템에 효과적으로 저장, 관리, 처리할 수 있도록 논리적 구조로 변환하는 과정을 의미한다.현실 세계으 개체, 속성, 관계를 분석하고 이를 데이터베이스에 구현 가능한 구조로 설계하는
물리적 모델링은 논리적 모델을 실제 데이터베이스에 구현 가능하도록 구체화하는 단계이다. 이 단계에서는 DBMS의 성능, 저장 구조, 제약 조건, 인덱스 등 실무적인 요소를 세밀하게 고려해야 한다.각 속성에 대해 DBMS에 적합한 데이터 타입을 지정한다.VARCHAR /
EXPLAIN은 SQL 쿼리의 실행 계획을 분석할 수 있게 해주는 명령어이다. 주로 SELECT, DELETE, UPDATE, INSERT, REPLACE 문 앞에 붙여 사용하며, 쿼리가어떻게 실행될지, 어떤 인덱스를 사용할지, 어떤 순서로 테이블이 접근될지 등을 확인

B-Tree는 이진 탐색 트리의 일반화된 형태로, 하나의 노드가 두 개 이상의 자식 노드를 가질 수 있다.하나의 노드는 여러 개의 키와 포인터(자식 링크)를 가진다.키는 정렬된 상태로 유지된다.사진은 위키트리에서 가져왔습니다.루트부터 시작해서 각 노드에서 키 범위를 확
TCL은 트랜잭션을 제어하기 위한 SQL명령어의 집합을 의미한다. 트랜잭션은 데이터베이스에서 하나의 논리적인 작업 단위이며, TCL은 이 트랜잭션을 완료하거나 취소하거나, 임시 저장하는 역할을 한다.완료: Commit취소: Rollback임시 저장: savepoint데
DCL(Data Control Language)는 데이터베이스에서 접근 권한을 관리하고 보안을 유지하기 위한 SQL이다.누가 어떤 데이터에 읽기/쓰기/변경/삭제 권한을 가지는지를 설정하거나 회수할 때 사용하는 명령어이다.일부 DBMS에서는 DENY, AUDIT, NOA
트랜잭션이란 데이터베이스의 하나의 논리적인 작업 단위로, 여러 SQL문장이 하나의 단위로 묶여 모두 성공하거나 모두 실패해야 한다.위와 같은 이체 작업은 두 쿼리가 모두 성공해야 의미가 있으며, 하나라도 실패하면 전체를 ROLLBACK해야 한다.트랜잭션은 모든 작업이
스토리지 엔진(Storage Engine)은 DBMS가 데이터를 디스크에 저장하고, 조회하고, 수정하고, 삭제하는 방법을 실제로 구현한 하위 모듈이다. 데이터를 어떻게 저장하고 읽어올지 담당하는 저장소의 내부기술이라고 보면 된다.MySQL은 다양한 스토리지 엔진을 지원
프로시저(Procedure)와 함수(Function)은 사용자 정의 루틴(User Defined Routine, UDR)이라고 불리며, SQL문을 반복적으로 실행하거나, 비즈니스 로직을 캡슐화할 때 사용된다.둘 다 비슷하지만 용도, 반환값, 사용 방식에서 차이가 있다.
느린 쿼리는 데이터베이스 성능 저하의 주범이다. 이를 식별하고 분석하는 방법은 아래와 같은 순서로 진행할 수 있다.반응 시간이 길다CPU 사용률 또는 디스크 I/O 급증DB 연결 수가 급격히 증가웹 요청이 지연되거나 타임아웃 발생DB 락이 자주 발생로그는 일반적으로 /