yeongkeeDev
인덱스 컨디션 푸시다운(index_condition_pushdown)
인덱스 컨디션 푸시다운 인덱스 컨디션 푸시다운이란 인덱스 조건(Codition)을 스토리지 엔진으로 전달해주는 기능이다. MySQL 5.6 버전부터 해당 기능이 도입되었는데, 어떠한 이점을 가져오는지 알아보도록 하자. 테이블 및 인덱스 생성 우선 인덱스 컨디션 푸시다운을 테스트하기 위해 employees 테이블을 생성해서 100건 정도의 데이터를 넣고, 아래와 같은 인덱스를 생성해주도록 한다. CREATE TABLE employees (emp_no bigint not null primary key, first_name varchar(255), last_name varchar(255), hire_date datetime); ALTER TABLE employees ADD INDEX temp_idx (last..
프로세스 알아보기
프로세스 프로세스란 메모리나 CPU 상에 올라와서 동작하고 있는 살아움직이는 객체이다. 프로세스와 조금 헷갈리는 개념으로는 프로그램이 있는데, 프로그램은 디스크 상에 존재하는 lifeless한 객체이다. 즉, 프로그램은 생명이 없는 객체이고 이러한 프로그램을 실행시키면 메모리와 CPU로 올라오게 되는데, 이렇게 메모리와 CPU로 올라와있는 객체를 프로세스라고 하는 것이다. 프로세스의 메모리 Layout 메모리나 CPU 상에 올라와 있는 프로세스는 크게 Code, Data, Heap, Stack 4가지 영역으로 구성된 메모리 Layout을 가진다. 각 영역을 살펴보자면 Code 영역은 실제 프로그램의 코드가 들어가는 영역으로, 프로그래밍을 한 순서에 따라 낮은 주소에서 높은 주소로 올라간다. Data 영역..
데이터베이스 인덱스
인덱스란 인덱스는 데이터의 저장(INSERT, UPDATE, DELETE)의 성능을 희생하고, 그 대신 데이터의 조회(SELECT) 성능을 높이는 기능이다. 흔히, 인덱스는 책의 맨 끝에 있는 "찾아보기"로 비유되고, "찾아보기"를 통해 알아낼 수 있는 페이지 번호는 데이터 파일에 저장되어 있는 레코드의 주소에 비유된다. 책의 "찾아보기"는 독자가 원하는 내용을 빠르게 찾을 수 있도록 도와주며, 만약 "찾아보기"가 없다면 독자는 원하는 내용을 찾기 위해 첫 장부터 찾아나가야 하기 때문에 원하는 내용을 찾기까지 오랜 시간이 걸릴 것이다. DBMS에서도 데이터베이스 테이블의 모든 데이터를 조회해서 원하는 결과를 가져오려면 시간이 너무 오래 걸리게 된다. 그래서 책의 "찾아보기" 기능처럼 원하는 데이터를 빠르..
데이터베이스 트랜잭션
트랜잭션 트랜잭션이란 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 트랜잭션의 성질 트랜잭션은 ACID라고 하는 원자성, 일관성, 격리성, 지속성을 보장해야 한다. Atomicity - 원자성 원자성은 한 트랜잭션 내의 일련의 작업들은 모두 성공하거나 모두 실패해야 한다는 성질이다. (All or Nothing) 예를 들어 출금과 입금 작업을 하는 계좌이체 트랜잭션은 원자성을 보장해야 한다. Consistency - 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다는 성질이다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. Isolation - 격리성..