MySQL, MariaDB

MySQL/MariaDB InnoDB Storage Engine (Data Page)

SungWookKang 2019. 3. 24. 10:40
반응형

MySQL/MariaDB InnoDB Storage Engine (Data Page)

 

·      Version : MySQL 5.5, 5.6, 5.7

 

MySQL / MariaDB 에서 사용하는 InnoDB 스토리지 엔진은 레코드 기반의 잠금을 제공하기 때문에 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어나다. InnoDB 구조는 크게 메모리 영역과 CPU 연산 영역, 디스크 스토리지 영역으로 구분할 있다. 메모리 영역에는 버퍼풀과 로그 버퍼가 있으며 CPU 연산에는 인서트 버퍼 머지 스레드, Write 스레드, 로그 스레드, 그외 기타 스레드가 있다. 디스크 영역에는 시스템 테이블 스페이스와 사용자 테이블 스페이스, 리두로그가 존재한다.

·       MySQL/MariaDB InnoDB 스토리지 엔진 특성 : http://sqlmvp.kr/220432956246

 

이번 포스트에서는 InnoDB 데이터 Page size Bufer pool에서 페이지가 디스크로 플러쉬 되는 내용에 대해서 알아본다.

Page 디스크(데이터 파일) 메모리(버퍼풀) 사이에서 InnoDB 한번에 전송할 있는 양을 나타내는 단위로Page에는 데이터 양에 따라 최소한 하나 이상의 행이 존재한다. 행이 완전히 단일페이지에 저장되지 않을때에는 다른 페이지에 데이터를 저장하고 해당 페이지에 포인터로 저장 위치를 표시 한다. 데이터를 읽고 쓰는 경우 I/O 처리량을 높이기 위해 한번에 익스텐트식 읽는다.


Page 많은 데이터를 저장하기 위해서는 압축된 페이지 형식을 사용하며 , BLOB, large text 필드 형태의 데이터를 별도의 분리된 테이블에 저장하여 데이터 조회시 해당 열을 참조하지 않는 경우 I/O 오버헤드 메모리 사용을 줄일 있다.

 

Page Size MySQL 5.5까지는 InnoDB에서 16KB 고정되어 있다. MySQL 5.6 부터는 innodb_page_size 설정 옵션에 따라 제어되며 4KB, 8KB, 16KB 지원된다. MySQL 5.7 이후부터는 32KB 64KB 페이지 크기를 지원한다. 32KB 64KB 페이지 크기의 경우 FOW_FORMAT= COMPRESSED 지원되지 않으며 최대 레코드 크기는 16KB 이다.

show Variables where Variable_name like 'innodb_p%';

 


페이지 크기는 MySQL 인스턴스를 생성 설정되며 이후에는 일정하게 유지된다. 페이지 크기는 시스템 테이블 스페이스, 테이블 파일 테이블 스페이스 일반 테이블 스페이스를 포함하여 모든 InnoDB 테이블 스페이스에 동일하게 적용된다.

 

Page cleaner 버퍼풀에서 더티페이지를 플러시할때 MySQL 5.6 이전 버전에서는 master thread 의해서 작업이 수행되었다. 페이지 클리너 스레드의 수는 MySQL 5.7부터  innodb_page_cleaners 구성 옵션에 의해 제어 된다.

 

[참고자료]

·       http://sqlmvp.kr/220432956246

·       https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_page

·       https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_page_cleaners

 

 

 

2017-10-16 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

MySQL, MariaDB, InnoDB, InnoDB Storage Engine, Mysql Page size, innodb extent, 스토리지 엔진, 버퍼풀, 이노DB,




반응형