본문 바로가기

DBMS3

[DBMS] Index를 통한 SELECT 쿼리 성능 개선 1. INDEX1-1. INDEX란?데이터베이스 인덱스(index)는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블에 저장된 데이터의 검색 속도를 향상시키기 위한 자료구조이다. 인덱스는 데이터베이스 내의 특정 컬럼(열)이나 컬럼들의 조합에 대한 값과 해당 값이 저장된 레코드(행)의 위치를 매핑하여 데이터베이스 쿼리의 성능을 최적화하는 데 중요한 역할을 한다. 예를 들어, 책에서 원하는 내용을 찾는다고 가정하면, 책의 모든 페이지를 넘기면서 원하는 내용이 나올 때까지 찾는 것보다 목차 또는 저자가 남긴 색인(index)을 통해 찾는 것이 더욱 빠를 것이다. 데이터베이스의 인덱스가 책의 목차와 색인과 같은 역할을 한다. 간단하게 정리하면 인덱스의 개념은 아래와 같다.테이블에 대한 검색의 속도.. 2024. 5. 16.
[DBMS] Transaction의 격리수준 (Isolation Level) 1.  격리수준 (Isolation Level)이란?트랜잭션(Transaction)간 서로 얼마나 고립되어 있는지 나타내는 수준한개의 트랜잭션이 다른 트랜잭션이 변경한 데이터에 대한 접근 할 수 있는 강도를 의미한다.Level은 0~3 수준으로 나뉘어져 있으며 레벨이 커질수록 고립의 수준이 높아지고, 성능은 저하될 수 있다.Level 0은 고립이 거의 되어있지 않은 수준이고, Level 3는 완전하게 고립(직렬화)되어 있는 상태이다. 2. 격리 수준의 필요성은 무엇일까?기본적으로 격리 수준은 트랜잭션의 ACID 특성을 보장하기 위해 사용된다.격리 수준이 낮으면 많은 트랜잭션의 처리가 빨라지지만 데이터의 무결성에 문제가 생길 수 있다.격리 수준이 높으면 트랜잭션 처리 성능이 저하될 수 있지만 데이터 무결성.. 2024. 3. 14.
[DBMS] RDBMS에서 트랜잭션의 ACID 규칙 1. RDBMS에서 트랜잭션이란 무엇인가?데이터베이스에서 데이터에 대한 하나의 논리적인 작업 단위를 의미한다.논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나누어질 수 없도록 만든 것트랜잭션 내 SQL문들은 모두 성공하는 경우 commit되고, 하나라도 실패하는 경우에는 전체가 rollback된다.트랜잭션 내 SQL문 중에 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다.트랜잭션의 하나의 예로 은행 어플에서 계좌이체를 한다고 가정해보자.계좌이체라는 하나의 작업을 위해서 은행 어플에서는 내부적으로 여러 단계의 업무를 거쳐야 할 수 있다.간단하게 업무를 요약하면 [송신자 계좌 금액 감소], [수신자 계좌 금액 증가]이 있을 것이다.이렇게 두 단계에 대한 데이터를 처리하는 논리적 행위를 트랜잭.. 2024. 3. 13.