PostgreSQL은 다른 RDBMS와는 다르게 Vacuum이라는 개념이 존재한다.간단히 말하자면 더 이상 사용되지 않는 데이터들을 정리하는 명령이다.DB에 데이터는 물리적으로 디스크에 저장되게 된다. 그러나, 이 데이터를 UPDATE or DELETE 시에 디스크에
DBMS는 데이터를 고정 길이의 페이지로 저장하며, 디스크에서 읽거나 쓸 때에 페이지 단위로 입출력이 이루어진다.페이지들을 관리하는 모듈을 페이지 버퍼 관리자 or 버퍼 관리자 라고 한다.질의 처리기 ( Query Processor ) 와 저장 시스템 ( Storage
여러 개의 DB를 수평적인 구조로 확장 ( Active - StandBy )노드들 간의 데이터를 동기화하여 일관성 있는 데이터를 유지할 수 있다1개의 노드가 죽어도 다른 노드로 운영 가능장애가 전파된 경우 처리가 까다로움여러 개의 DB를 수직적인 구조로 확장 ( Mas
MySQL에서는 각 요청을 어떻게 처리하는지 정리해 보고자 한다. Real MySQL 8.0 책을 읽고 정리한 내용이다. MySQL 스레딩 구조 프로세스 기반이 아닌 스레드 기반으로 작동 Foreground / Background Thread로 구분 >전통적인 스
InnoDB MySQL 스토리지 엔진 중 하나. 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금 제공한다. 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어나다. PK에 의한 클러스터링 PK를 기준으로 클러스터링되어 저장 PK 값의 순서대로 디스크에 저장
Transaction 격리 수준들을 살펴 보면, Repeatable Read 격리 수준에서 Phantom Read 문제가 발생한다. 그러나, MySQL에서 InnoDB 엔진을 사용할 경우, Repeatable Read 격리 수준에서 Phantom Read가 발생하지
책의 목차가 인덱스에 많이 비유된다.목차를 통해 알아낼 수 있는 페이지 번호는 데이터 파일에 저장된 레코드의 주소에 비유된다.DBMS도 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래 걸린다.컬럼의 값과 해당 레코드가 저장된 주소를 K
클러스터링이란 여러 개를 하나로 묶는다는 의미로 주로 사용된다.MySQL의 클러스터링은 테이블의 레코드를 비슷한 것(프라이머리 키를 기준으로)들끼리 묶어서 저장하는 형태로 구현→ 주로 비슷한 값들을 동시에 조회하는 경우가 많다는 점에 착안한 것이다.MySQL의 클러스터
풀 테이블 스캔 : 인덱스를 사용하지 않고 테이블의 데이터를 처음부터 끝까지 읽어서 작업을 처리풀 테이블 스캔을 선택하는 조건레코드 건수가 너무 작아, 인덱스를 읽는 것 보다 풀 테이블 스캔이 빠른 경우일반적으로 페이지 1개로 구성인덱스 레인지 스캔을 사용할 수 있는