Index란? 우리말로 색인, 쉽게 찾아볼 수 있도록 일정한 순서에 따라 놓은 목록 DB의 Index 데이터베이스에서 조회 및 검색 성능을 향상하는 자료구조. where 절 등을 통해 활용된다. DBMS의 인덱스는 항상 정렬된 상태를 유지. 하나의 데이터베이스 객체. 데이터베이스 크기의 약 10% 정도의 저장공간 필요. DB의 스캔 방식 DB의 스캔 방식에는 Full Table Scan과 Index Scan이 있다. Full Table Scan 순차적 접근 테이블에 존재하는 모든 데이터를 읽어 가면서 조건에 맞으면 추출, 맞지 않으면 버림 접근 비용 감소 사용하는 경우 적용가능한 인덱스가 없는 경우 인덱스 처리 범위가 넓은 경우 (인덱스가 있더라도 처리 범위가 넓어 성능상의 이점이 없을 때) 작은 테이블..
데이터베이스 커넥션 애플리케이션과 데이터베이스의 연결을 뜻함 애플리케이션에서 데이터베이스에 접속하고 접속을 종료하는 일련의 과정을 의미. 풀(Pool) 필요할 때마다 개체를 할당하고 파괴하는 대신, 사용 준비된 상태로 초기화된 개체 집합 즉, 데이터베이스 커넥션 풀은 커넥션(개체)을 미리 생성해 사용 준비된 상태로 초기화된 커넥션 집합 자바의 Connection 인터페이스 java.sql 패키지에 정의된 Connection 인터페이스에는 다음과 같이 설명한다. A connection (session) with a specific database. SQL statements are executed and results are returned within the context of a connection. ..
Lock이란? 락(Lock)이란 데이터베이스에서 데이터에 잠금을 걸어 동시성을 제어하는 방법이다. 여러 사용자가 동시에 데이터베이스에 접근하여 데이터를 변경하는 상황에서 충동을 방지하기 위해 사용된다. InnoDB의 Lock MySql 공식 문서에 따르면 InnoDB는 다음과 같은 다양한 종류의 lock을 사용한다. Shared and Exclusive Locks Intention Locks Record Locks Gap Locks Next-Key Locks Insert Intention Locks AUTO-INC Locks Predicate Locks for Spatial Indexes 이 글에서는 다른 DBMS에서도 존재하는 개념인 공유 잠금과 배타 잠금에 대해서만 정리해보겠다. 공유 잠금(Share..
트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 특징 원자성(Atomicity) 트랜잭션의 작업이 모두 수행되거나, 모두 수행되지 않는 것 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야하고, 하나라도 오류가 발생하면 전부 취소되어야 함 일관성(Consistency) 데이터베이스의 상태는 일관되어야 함. 트랜잭션의 처리 전, 후 데이터베이스의 상태는 항상 유효해야 함을 의미 트랜잭션 처리 후 여전히 데이터베이스의 제약조건 및 데이터 규칙에 위배되지 않는 것 격리성(Isolation) 트랜잭션은 다른 트랜잭션으로부터 독립(및 격리)되어있어야 하는 것 여러 개의 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동 여러 개의 격리 수준으로 나뉘어 격리성을 보장 지속성(D..
MySQL의 구조 MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분한다. MYSQL 엔진 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL 파서 및 전처리기, 그리고 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 성능 향상을 위해 캐시나 버퍼 풀과 같은 보조 저장소 기능도 포함돼 있다. 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어 오는 역할을 한다. 여러 가지 스토리지 엔진을 사용할 수 있다. CREATE TABLE test_table (col1 INT, col2 INT) ENGINE = INNODB 위와 같이 테이블을 생성하면 해당 테이블의 CRUD 작업은 InnoDB 스토리지 엔진이 처리한다. 핸들러 API..
조인이란 두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다. SQL문에서 FROM 절에 두 개 이상의 테이블이 나열될 경우 조인이 수행된다. 조인 연산은 두 테이블 사이에서 수행된다. FROM 절에 A, B, C라는 세 개의 테이블이 존재하더라도 세 개의 테이블이 동시에 조인이 수행되는 것이 아니다. 세 개의 테이블 중에서 먼저 두 개의 테이블에 대해 조인이 수행된 후, 먼저 수행된 조인 결과와 나머지 테이블 사이에서 조인이 수행된다. 이러한 작업은 FROM 절에 나열된 모든 테이블을 조인할 때까지 반복한다. 테이블 또는 조인 결과를 이용하여 조인을 수행할 때 조인 단계별로 다른 조인 기법을 사용할 수 있다. 예를 들어, A와 B 테이블을 조인할 때는 NL Join 기법을 사용하고 해당 조인 결과와..
이상현상(anormaly) 테이블 내의 데이터들이 불필요하게 중복되어 테이블을 조작할 때 발생되는 비합리적 현상이다. 이상현상 삽입 이상 (Insersion Anomaly) : 데이터를 삽입 시 불필요한 세부 정보를 입력해야 하는 현상 (null 값을 넣는 등) 삭제 이상 (Deletion Anomaly) : 데이터 삭제 시 원치 않는 다른 정보가 같이 삭제되는 현상 갱신 이상 (Update Anomaly) : 데이터를 갱신 시 특정 부분만 수정되어 중복된 값이 모순을 일으키는 현상 함수 종속성(FD, Functional Dependency) 어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 관계를 함수 종속성이라고 한다. A->B로 표기하며 A를 B의 결정자(Determinant)라고 ..
RDB (Relation DataBase) 관계형 모델을 기반으로 하는 데이터 베이스를 의미한다. 이를 유지, 관리하기 위한 시스템을 RDBMS(Relation DataBase Management System)이라 한다. RDBMS의 목표 데이터 무결성을 높이는 것이다. 데이터 무결성은 아래 세 종류가 있다. 데이터 무결성에 대한 자세한 내용은 여기를 참고하기 바란다. 엔터티 무결성 참조 무결성 도메인 무결성 특징 상호 관련성을 가진 테이블 집합 테이블 사이의 관계를 외래 키로 표현 2차원 데이터(행과 열)로 표현 SQL을 사용해 질의 ACID 성질 스키마 변경이 어려움 수직적 확장이 쉽고 수평적 확장이 어려움 스키마 변경의 어려움 RDB는 테이블 사이에 서로 의존성이 있고 서로 맞물려있기에 데이터 타입..