본문 바로가기

CS/DataBase

(MySQL) Inno Storage 엔진

 

Inno DB의 개요

  • Inno DB는 높은 신뢰성과 높은 퍼포먼스의 균형을 이루는 대표적인 스토리지 엔진이다.
  • 8.0 버전 이후로 MySQL의 default 스토리지 엔진이 되었으며 다른 스토리지 엔진을 사용하기 위해서는 테이블 생성 시 명시하여야 한다.
  • Inno DB의 DML은 ACID 모델을 따른다.
  • Inno DB는 기본 키를 기반으로 쿼리를 최적화 하기 위해 디스크에 데이터를 정렬한다.
  • Inno DB는 무결성을 유지하기 위해 FK를 지원한다.

 


Inno DB의 장점

1. 만일 하드웨어 혹은 소프트웨어에 이슈사항이 생겼다면 해당 시점의 DB에 일어난 일들과 관계없이 리부팅 이후에 특별한 작업을 할 필요가 없다.

 

Inno DB의 crash recovery는 이러한 문제가 발생하기 이전에 자동적으로 커밋을 해준다. (하지만 진행 중인 작업은 커밋되지 않음)

 

 

2. 메인 메모리에 데이터가 접근 시 index와 테이블에 대한 캐시를 저장하는 Buffer fool을 가지고 있다.

 

사용된 데이터는 메모리에 바로 전달된다. 

이러한 캐시는 데이터에 해당하는 많은 타입을 가지고 있으며 처리과정에 대한 시간을 단축시켜 준다.

물리적 메모리의 80% 까지 Buffered Pool에 할당된다.

 

 

3. 특정 테이블에 관련 데이터를 분리시키고 싶다면 참조 무결성을 강화하는 외래 키를 설정할 수 있다.

 

UPDATE, DELETE 실행 시 다른 테이블에 관련 데이터는 자동적으로 함께 삭제되거나 업데이트된다.

 

 

4. 데이터가 디스크 혹은 메모리에 손상된다면 checksum 메커니즘이 데이터를 사용하기 이전에 가짜 데이터로 사용자에게 알려준다.

 

5. 사용자가 각각의 테이블에 PK를 디자인할 때, 해당 열과 관련된 작업이 자동으로 최적화된다.

 

6. DML 은 changing buffering이라 불리는 자동화 메커니즘으로 인해 최적화된다.

change buffering

The general term for the features involving the change buffer, consisting of insert buffering, delete buffering, and purge buffering. Index changes resulting from SQL statements, which could normally involve random I/O operations, are held back and performed periodically by a background thread. This sequence of operations can write the disk blocks for a series of index values more efficiently than if each value were written to disk immediately. Controlled by the innodb_change_buffering and innodb_change_buffer_max_size configuration options.

See Also change buffer, delete buffering, insert buffering, purge buffering.

https://dev.mysql.com/doc/refman/8.0/en/innodb-benefits.html

 

MySQL :: MySQL 8.0 Reference Manual :: 15.1.1 Benefits of Using InnoDB Tables

15.1.1 Benefits of Using InnoDB Tables You may find InnoDB tables beneficial for the following reasons: If your server crashes because of a hardware or software issue, regardless of what was happening in the database at the time, you don't need to do anyth

dev.mysql.com


Inno DB의 장점의 아키텍처


References

https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html

 

MySQL :: MySQL 8.0 Reference Manual :: 15.4 InnoDB Architecture

 

dev.mysql.com

 

'CS > DataBase' 카테고리의 다른 글

(MySQL) ACID : 트랜잭션을 통한 동시성 제어  (0) 2020.03.08
(MySQL) MyISAM vs InnoDB  (0) 2020.02.16
(MySQL) MyISAM Storage 엔진  (0) 2020.02.16
(MySQL) 스토리지 엔진  (0) 2020.02.16
(ORACLE) 오라클의 데이터 구조  (0) 2019.12.11