DB
-
[Database] Database ScanCS/Database 2022. 1. 19. 21:18
Database Scan 앞선 인덱스 포스팅에서 항상 테이블 풀 스캔이 느린 것만은 아니라고 말했다. 어떤 경우에는 인덱스 스캔보다 테이블 풀 스캔이 빠른 경우도 있다. 데이터베이스의 데이터를 스캔하는 방법에는 여러가지 종류가 있고, 어떤 방법이 가장 최적의 방법이라고 말할 수 없다. 다양한 방법 중 적합한 방법을 적용하여 데이터베이스 성능을 높이는 것이 중요하다. 다양한 스캔 방법에 대해 알아보자. Table Full Scan 인덱스를 거치지 않고 테이블에 있는 모든 레코드를 읽는 방법 다중 블록 단위로 메모리에 옮겨지며, 이 블록들은 순차적으로 읽혀진다. (Sequential access + Multi Block I/O) 일반적으로 블록들은 서로 인접해 있기 때문에 한 번의 I/O로 처리 가능하다. ..
-
[Database] Transaction과 Isolation LevelsCS/Database 2022. 1. 19. 10:48
Transaction이란 ❔❔ 트랜잭션(Transaction)은 데이터베이스의 상태를 변환하는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 특성 트랜잭션은 다음의 ACID라는 4가지 특성을 만족해야 한다. 원자성(Atomicity) 트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 한다. 트랜잭션이 부분적으로 수행된다면 데이터베이스에 반영되지 않아야 한다. 일관성(Consistency) 트랜잭션이 완료된 다음의 상태에서도 트랜잭션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야 한다. 고립성(Isolation) 각각의 트랜잭션은 서로 간섭없이 독립적으로 수..
-
[Database] Clustered Index와 Non-clustered IndexCS/Database 2022. 1. 17. 16:24
앞선 포스트에서 Index(인덱스)에 대해 자세히 알아보았다. 인덱스는 크게 Clsutered Index와 Non-clustered Index로 나눌 수 있다. 이 두 종류의 인덱스에 대해 자세히 알아보자. Clustered Index와 Non-clustered Index Clustered Index Clustered Index는 테이블의 레코드를 지정된 컬럼에 대해 물리적으로 재배열한다. Clustered Index는 테이블 당 한 개만 존재할 수 있고, primary key 제약조건을 지정하는 컬럼에 대해 자동으로 Clustered Index를 생성한다. 이렇기 때문에 우리가 일반적으로 테이블을 생성할 때 특정 컬럼에 primary key 제약조건을 지정했다면, 데이터가 자동으로 정렬되는 것이다. C..
-
[Database] IndexCS/Database 2022. 1. 14. 22:55
Index란 우리가 실생활에서 자주 접해볼 수 있는 단어이다. 우리는 책에서 원하는 내용을 찾기 위해서 책의 처음부터 끝까지 원하는 내용을 찾아보는 것이 아니라 목차나 인덱스에서 원하는 내용을 먼저 찾은 뒤 해당 내용이 있는 페이지를 찾아간다. 이와 같은 방식으로 데이터베이스에서도 인덱스를 사용한다. Database에서 Index 란 ❔❔ 데이터베이스에서 인덱스란 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 데이터베이스에서 데이터 조회 요청을 하면, DB 서버 프로세스는 메모리(DB 버퍼 캐시)를 먼저 확인한다. 메모리에는 자주 사용되는 테이블이 캐싱되어 있는데, 메모리에 원하는 데이터가 없는 경우 디스크에서 데이터 파일을 복사해온 후 조회한 데이터를 찾아 반환한다. 이때 인덱스를 사..