Real MariaDB (2017년)
ARIA 스토리지 엔진 0 0 36,670

by 구루비스터디 MariaDB 스토리지 엔진 ARIA 스토리지 엔진 [2019.08.11]


6.1 Aria 스토리지 엔진

  • Aria 스토리지 엔진은 MyISAM의 단점을 보완하기 위해서 만들어진 스토리지 엔진이다.
  • MariaDB에서 내부 임시 테이블은 Aria 스토리지 엔진을 사용한다.
  • Aria 스토리지 엔진이 MyISAM과 차별화되는 대표적인 기능은 트랜잭션과 페이지 캐시 기능이다.


6.1.1 트랜잭션

CREATE TABLE tb_aria(
 fd1 INT NOT NULL,
 fd2 VARCHAR(10) NOT NULL,
 PRIMARY KEY(fd1)
) ENGINE=Aria TRANSACTIONAL=1;


  • 트랜잭션 지원을 활성화한 상태로 Aria 스토리지 엔진 테이블을 생성하면 이 테이블에 대해서는 트랜잭션이 지원된다.
  • TRANSACTIONAL = 1로 설정되면, 이 테이블의 모든 변경 내용이 InnoDB나 XtraDB 스토리지 엔진과 같이 먼저 로그 파일에 기록되고 실제 데이터 변경 내용은 지연되어 처리된다.
  • MariDB 10.0에서 사용되는 Aria 스토리지 엔진 버전은 1.5인데, 완벽한 트랜잭션 지원은 2.0 버전에 추가될 예정이다.
  • 비정상적으로 MariDB 서버가 종료되었다가 재시작될 때 자동 복구 기능을 수행한다.TRANSACTIONAL 옵션은 현재는 트랜잭션 기능보다는 테이블이 손상되지 않도록 보호해 주는 역할로 사용된다.


6.1.2 페이지 캐시

  • MyISAM 스토리지 엔진은 key_buffer_size 시스템 설정으로 별도의 캐시를 사용할 수 있는데, 이 메모리 버퍼는 인덱스만 캐시할 수 있다.
  • Aria 스토리지 엔진은 인덱스 뿐만 아니라 테이블의 데이터 페이지까지 모두 메모리 공간에 캐시할 수 있다.
CREATE TABLE tb_aria(
 fd1 INT NOT NULL,
 fd2 VARCHAR(10) NOT NULL,
 PRIMARY KEY(fd1)
) ENGINE=Aria ROW_FORMAT=page;


  • ROW_FORMAT=page로 설정한 테이블은 데이터 파일의 내용까지 모두 메모리 버퍼에 캐시 가능
  • aira_pagecache_buffer_size 설정으로 크기 조정 가능하며,기본값은 128MB 이다.
  • MariaDB 서버는 사용자의 쿼리를 처리하기 위해서 내부 임시 테이블로 Aria 스토리지 엔진을 사용하므로 64MB ~ 128MB 정도의 페이지 캐시 공간은 설정해 두는 것이 좋다.
  • ROW_FORMAT=fixed 로 설정하면 MyISAM과 비슷하게 인덱스만 캐시 된다.


6.1.3 시스템 설정 변수

  • aria_pagecache_buffer_size : Aria 스토리지 엔진을 사용하는 테이블의 인덱스나 데이터 페이지를 캐시할 수 있는 메모리 공간의 크기를 설정
  • aria_sort_buffer_size : Aria 스토리지 엔진을 사용하는 테이블을 생성하거나 인덱스 추가, REPAIR 명령으로 복구 할때 정렬이 필요 한데, 이때 이 변수에 설정된 크기만큼 메모리를 할당해서 사용. GROUP BY/ORDER BY 를 처리하기 위한 정렬은 sort_buffer_size에서 설정된 메모리 공간을 사용한다.
  • aria_group_commit, aria_group_commit_interval : TRANSACTIONAL=1, TRANSACTIONAL=yes로 생성된 테이블은 변경 내역이 커밋될 때 로그 먼저 기록하는데, 이때 동시에 커밋되는 트랜잭션들의 로그를 모아서 기록 한다. aria_group_commit 설정은 Aria 스토리지 엔진이 그룹 커밋을 사용할지, aria_group_commit_interval 설정은 얼마나 자주 모아서 디스크에 기록을 할지를 결정한다. aria_group_commit_interval은 ms 단위로 설정하면 된다.
  • aria_block_size : 기본으로 8kb로 되어 있고, 블록 사이즈는 2KB/4KB/8KB로 선택할 수 있다.
  • aria_used_for_temp_tables : MariaDB 서버가 사용자의 쿼리를 처리하는 동안 내부적으로 임시 테이블이 필요한 경우 MyISAM 스토리지 엔진 대신 Aria 스토리지 엔진을 사용한다. 이 설정은 MariDB 서버를 컴파일하는 시점에만 변경 가능하다.
"구루비 데이터베이스 스터디모임" 에서 2017년에 "Real MariaDB" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4200

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입