db
-
Real MySQL 인덱스DataBase/MySQL 2022. 5. 8. 16:21
디스크 읽기 방식 저장소 하드 디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD) SSD는 기존 하드 디스크 드라이브에서 데이터 저장용 플레터(원판)을 제거하고, 그 대신 플래시 메모리를 장착하고 있다. 그래서 디스크 원판을 기계적으로 회전시킬 필요가 없으므로 아주 빨리 데이터를 읽고 쓸 수 있다. 플레시 메모리는 전원이 공급되지 않아도 데이터가 삭제되지 않는다. 게다가 데이터 베이스 서버에서 순차 I/O 작업은 비중이 크지 않고, 보통 랜덤 I/O 작업을 통해 작은 데이터를 읽고 쓰는 작업이 대부분이기 때문에 DBMS용으로 SSD를 많이 사용하고 있다. 순차 I/O와 랜덤 I/O란 위 그림을 보게 된다면 순차 I/O는 디스크 헤더를 한번만 사용한 반면 랜덤 I/O은 헤더가 3번을 움직였다. 헤..
-
Real MySQL 트랜잭션DataBase/MySQL 2022. 4. 30. 14:27
트랜잭션 트랜잭션이란? 트랜잭션의 정의 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어 주는 것 즉 트랜잭션은 데이터의 정합성을 보장하기 위한 기능 MySQL에서의 트랜잭션 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적용되거나(commit을 실행했을때) 아무것도 적용되지 않아야(RollBack 또는 트랜잭션을 RollBack시키는 오류가 발생했을 때)함을 보장해주는 것 잠금 잠금은 동시성을 제어하기 위한 기능 트랜잭션 수준과 잠금의 차이 잠금은 여러 커넥션에서 동시에 동일한 자원(레코드나 테이블)을 요청한 경우 순서대로 한 시점에는 하나의 커..
-
Real MySQL 아키텍처DataBase/MySQL 2022. 3. 12. 14:25
MySQL 엔진 아키텍처 각 부분에 대한 하는 역활 커넥션 핸들러 클라이언트로부터 접속 및 쿼리 요청을 처리 MySQL 엔진 SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당되는 처리 수행 스토리지 엔진 디스크 스토리지에 저장하거나 디스크 스토리지부터 데이터를 읽어오는 부분 핸들러 API MySQL 엔진에서 데이터를 읽어나 쓰거나 할 때는 각 스토리지엔진에 쓰기 또는 읽기를 요청을 하는데 이러한 요청을 핸들러(handler)요청이라 한다. 여기서 사용되는 API를 핸들러 API MySQL 스레딩 구조 스레딩 구조 설명 MySQL 서버는 프로세스 기반이 아니라 스레드 기반으로 작동 포그라운드 스레드나 백그라운드 스레드로 구분 동일한 이름의 스레드가 2개 이상 보이는 것은 MySQL 서버의 설정..
-
DB 트랜잭션 격리수준(Isolation Level)DataBase/공통 2021. 3. 9. 19:29
트랜잭션 격리수준(Isolation Level)이란? 동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것. 트랜잭션 격리수준의 필요성 위의 내용중에 '다른 트랙잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지'란 내용이 있는데 이에 따른 level을 정해놨는데 레벨은 4종류가 된다. 레벨이 높으면 높을 수록 비용이 높아지고, 낮으면 낮을 수록 비용이 낮아진다. Locking이 동시에 수행되는 많은 트랜잭션들을 순서대로 처리하는 방식일 수록 비용이 높아지고 아니면 낮아진다. Locking이란? 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하게 막는것 트랜잭션 격리수준(Isolation Lev..