728x90
반응형
InnoDB Engine
** 개요 **
-
InnoDB는 가장 중요하며 광범위하게 활용적인 Default Transactional storage engine 이다.짧은 생명주기의 Transaction 처리 완료를 위해 디자인 되었다. (롤백 보다는)
-
InnoDB는 Tablespace 라고 알려진 한개 이상의 데이터 파일 시리지 안에 자체 파일을 저장한다.(Tablespace 는 근본적으로 InnoDB가 자기 자신을 관리하는 블랙박스이다.)
-
InnoDB는 각 테이블의 데이터와 인덱스들을 분리된 파일로 저장할 수 있다.(각각의 Tablespace를 만듬으로서 raw disk partition을 사용할 수 있다. 최신의 파일시스템이 이를 필요하지 않게 만들기는 했지만)
** MVCC **
-
높은 동시 처리성을 성취하기 위해 MVCC를 사용하며, 모두 4개의 SQL 표준 Isolation Levels를 구현 하고 있다.
-
REPEATABLE READ Isolation level 기본으로 하며, next-key locking 전략으로 Isolation level에서 당신이 쿼리로 건드린 row만을 Locking 한다기 보다는 Phantom Read를 방지해준다.
-
또한, Index 구조도 Lock gaps 함으로써, Phantom Insert를 방지해준다.(MVCC란? 다중 동시성 제어로 읽기 작업과 쓰기 작입어 서로 방해해 동시성을 떨어 뜨리고공유 Lock을 사용함에도 불구하고 데이터 일관성이 훼손될 수 있는 문제를 해결 해주는 방식)
** index 색인 **
-
InnoDB 테이블은 Clusterd index 구조를 가지며, 다른 MySQL의 storage engine들과는 매우 다르다
-
결과적으로, 주키 색인이 매우 빠르다. 하지만, 주키가 아닌 Secondary index가 주키를 포함하고 있다면 다른 indexes들이 커질것이다.(디스크랑 메모리 업살녹?)따라서, 테이블에 많은 index를 위해서는 작은 주키를 가져야 한다.
** 최적화 **
-
InnoDB는 다양한 내부 최적화 방법을 가지고 있다.
-
Disk로부터 Prefetch를 위해 예측 읽기?(Predicitve read-ahead)
-
빠른 색인을 위한 메모리 adaptive hash index 자동 빌드
728x90
반응형
'Database > MySQL' 카테고리의 다른 글
데이터 베이스 설계 프로세스 (0) | 2019.10.22 |
---|---|
Isolation level (트랜잭션 고립(격리) 수준) (0) | 2019.10.22 |
프로시저 언제 사용해야 하나? (0) | 2019.10.22 |
트랜잭션 너는 누구니? (0) | 2019.10.22 |
MySQL's Storage Engies - MyISAM Engine (0) | 2019.10.22 |