MySQL 데이터베이스 엔진 비교

Comparison of MySQL database engines

이는 MySQL 데이터베이스 관리 시스템(DBMS)의 주목할 만한 데이터베이스 엔진과 비교한 것이다.데이터베이스 엔진(또는 "저장소 엔진")은 DBMS가 데이터베이스에서 CRUD(Create, 읽기, 업데이트 삭제하는 데 사용하는 기본 소프트웨어 구성 요소다.

이름 노점상 면허증 트랜잭션 개발중 MySQL 버전 마리아DB 버전
기록 보관소 오라클 GPL 아니요. 5.0 - 현재 5.1 - 현재
아리아 마리아DB GPL 아니요. 없음 5.1 - 현재
버클리 DB 오라클 AGPLv3 아니요. ? - 5.0 없음
블랙홀 오라클 GPL 아니요. 5.0 - 현재 5.1 - 현재
연결 마리아DB GPL 아니요. 없음 10.0 - 현재
CSV 오라클 GPL 아니요. 5.0 - 현재 5.1 - 현재
오라클 GPL 아니요. ? 없음
연합 오라클 GPL ? 아니요. 5.0 - 현재 ?
페더레이트X 마리아DB GPL 아니요. 없음 ? - 현재
ColumnStore(이전의 InfiniDB) 칼폰트 GPL 없음 10.5.4 - 현재
이노DB 오라클 GPL 3.23 - 현재 5.1 - 현재
메모리 오라클 GPL 아니요. 3.23 - 현재 5.1 - 현재
뫼롱가 그루가 프로젝트 GPL 아니요. 없음 10.0 - 현재
마이샘 오라클 GPL 아니요. 아니요. 3.23 - 현재 5.1 - 현재
마이록스 페이스북 GPLv2 없음 10.2 - 현재
NDB 오라클 GPLv2 ? 없음
오크그래프 오라클 GPLv2 아니요. 아니요. 없음 5.2 - 현재
S3 마리아DB GPL 아니요. 없음 10.5 - 현재
시퀀스 마리아DB GPL 아니요. 없음 10.0 - 현재
스핑크스 스핑크스 테크놀로지스 주식회사 GPL 아니요. 아니요. 없음 5.2 - 현재
스파이더 시바 겐토쿠 GPL 없음 10.0 - 현재
온도 테이블 오라클 GPL 아니요. 8.0 - 현재 없음
토쿠DB 페르코나 수정된 GPL 아니요. 없음 5.5 - 현재
XtraDB 페르코나 GPL 없음 5.1 - 10.1

InnoDB와 MyISAM의 비교

  1. InnoDB는 로그를 재생하여 충돌 또는 기타 예기치 않은 종료로부터 복구한다.MyISAM은 업데이트되었지만 디스크로 완전히 플러시되지 않은 인덱스 또는 테이블을 완전히 검색 및 복구하거나 재구성해야 한다.InnoDB 접근방식은 데이터 파일 크기에 따라 MyISAM 시간이 증가하는 반면, InnoDB 접근방식은 대략 고정된 시간이기 때문에, 데이터베이스 크기가 커질수록 더 큰 가용성을 제공한다.
  2. innoDB는 innodb_flush_log_at_trx_commit이 1로 설정된 상태에서 각 트랜잭션 후 트랜잭션 로그를 플러시하여 신뢰성을 크게 향상시킨다.[1]MyISAM은 데이터 파일 손상에 대해 동일한 복원력을 제공하기 위해 데이터=저널이 탑재된 ext4와 같이 완전히 저널링된 파일 시스템 위에서 실행되어야 한다.(저널은 MyISAM 성능 향상을 위해 SSD 디바이스에 배치할 수 있으며, 마찬가지로 InnoDB 로그는 SSD에서 실행되는 ext2와 같은 비 저널 파일 시스템에 배치되어 유사한 성능 향상을 도모할 수 있다.어느 경우에도 신뢰성은 희생되지 않는다.)
  3. InnoDB는 신뢰성은 낮지만 경우에 따라 성능이 더 높은 모드로 실행될 수 있다.innodb_flush_log_at_trx_commit을 0으로 설정하면 통제가 호출자에게 반환되기 전에 트랜잭션이 디스크에 커밋되지 않는 모드로 전환된다.대신, 디스크 플러시는 타이머에서 일어난다.[1]
  4. InnoDB는 자동으로 여러 개의 동시 삽입물을 그룹화하여 동시에 디스크로 플러시한다.[2]MyISAM은 데이터 행 및 인덱스에 읽기를 캐싱하기 위해 파일 시스템 블록 캐시에 의존하며 InnoDB는 행 캐시를 인덱스 캐시와 결합하여 엔진 자체 내에서 이 작업을 수행한다.[3]
  5. InnoDB는 있는 경우 기본 키 순서로 행을 저장하며, 그렇지 않은 경우 첫 번째 고유 키 순서로 행을 저장한다.이 속도는 키가 일반적인 작동에 적합하도록 선택되는 경우 훨씬 더 빠를 수 있다.[citation needed]기본 키나 고유 키가 없는 경우 InnoDB는 내부적으로 생성된 고유 정수 키를 사용하고 MyISAM처럼 대략적으로 삽입 순서대로 레코드를 저장한다.또는 동일한 효과를 얻기 위해 자동 증가 기본 키 필드를 사용할 수 있다.
  6. InnoDB는 데이터와 인덱스를 모두 업데이트 가능한 LZW 압축 페이지 저장소를 제공한다.MyISAM 압축 테이블을 업데이트할 [4]수 없음
  7. 완전한 AIDS 호환 모드에서 작동할 경우 InnoDB는 여러 연결에서 인서트에 대한 플러시를 결합하지만 트랜잭션당 최소 한 번 이상 디스크에 플러시를 수행해야 한다.일반적인 하드 드라이브 또는 어레이의 경우 초당 약 200개의 업데이트 트랜잭션을 제한한다.높은 트랜잭션 속도를 요구하는 애플리케이션의 경우, 트랜잭션 무결성을 유지하기 위해 쓰기 캐싱과 배터리 백업을 갖춘 디스크 컨트롤러가 필요할 것이다.InnoDB는 또한 이러한 효과를 감소시키는 몇 가지 모드를 제공하며, 물론 MyISAM보다 더 높은 신뢰성을 유지하지만 트랜잭션 무결성 보장의 손실로 이어진다.MyISAM은 이러한 오버헤드가 없으며 단지 트랜잭션을 지원하지 않기 때문에만 이 오버헤드를 가지고 있다.
  8. MyISAM은 업데이트에 테이블 수준 잠금을 사용하고 기존 행에 삭제하며, 잠금을 걸어 빈 공간에 삽입하는 대신 새 행을 추가할 수 있는 옵션도 있다.InnoDB는 행 레벨 잠금을 사용한다.많은 행이 업데이트되는 대형 데이터베이스 응용프로그램의 경우, 단일 테이블 수준 잠금으로 데이터베이스의 동시성이 현저히 감소하기 때문에 행 수준 잠금이 중요하다.
  9. InnoDB와 MyISAM은 모두 전체 텍스트 검색을 지원하며, InnoDB는 MySQL 5.6.4에서 전체 텍스트 색인 지원을 받지만 결과는 확연히 다를 수 있다.[5][6]

참조

  1. ^ a b MySQL 5.5 참조 설명서 - InnoDB 시작 옵션 및 시스템 변수
  2. ^ "MySQL 5.5 Reference Manual - InnoDB Group Commit". Archived from the original on 2011-11-04. Retrieved 2011-10-08.
  3. ^ "MySQL 5.5 Reference Manual - The InnoDB Storage Engine". Retrieved 28 May 2015.
  4. ^ MySQL 5.5 참조 설명서 - Myisampack - 압축된 읽기 전용 MyISAM 테이블 생성
  5. ^ "Changes in MySQL 5.6.4 (2011-12-20, Milestone 7)". Oracle. December 12, 2011.
  6. ^ "InnoDB Full-text Search in MySQL 5.6: Part 2, The Queries!". MySQL Performance Blog. March 4, 2013.

외부 링크