MySQL의 스토리지 엔진의 작동 알아보기

가장 뛰어난 특징은 플러그인 MySQL의 데이터베이스 스토리지 엔진 아키텍처는, MySQL의 용지 엔진을 개발하고 적절한 스토리지를 선택할 수있는 기준을 제공, 일반적으로 사용되는 스토리지 엔진을 설명합니다.


1. MySQL의 아키텍처 #

모든 사람이 전체 시스템에 저장 엔진 MySQL의 위치에있는 것을 알 수 있도록 MySQL의에서 스토리지 엔진 아키텍처를 최초로 도입의 도입 전에. 아래는 공식 아키텍처가 제공하는 차트입니다 :

MySQL의 아키텍처
MySQL의 아키텍처 다이어그램

그림에서 찾을 수 있습니다, MySQL은 다음과 같은 구성 요소로 이루어져 있습니다 :

  • 연결 풀 구성
  • 관리 서비스 및 도구 구성 요소
  • SQL 인터페이스 구성 요소
  • 쿼리 분석기 구성 요소
  • 최적화 구성 요소
  • 버퍼 (캐시) 구성 요소
  • 플러그 스토리지 엔진
  • 실제 파일

다른 가장 중요한 기능은 데이터베이스 플러그인 테이블 스토리지 엔진은, 또한 위의 그림에서 볼 수 있습니다에서 MySQL 데이터베이스는 다른, MySQL은 스토리지 엔진의 다양한 지원합니다. 특히 주목할 스토리지 엔진은 테이블이 아닌 데이터베이스를 기반으로한다는 것입니다.

2. MySQL의 스토리지 엔진 #

응용 프로그램의 특정 특성에 따라 서로 다른 스토리지 엔진을 선택할 수있는 능력 : 플러그 스토리지 엔진의 장점. 여기에 몇 가지 인기있는 MySQL의 스토리지 엔진이다.

2.1 이노 스토리지 엔진 #

대상 응용 프로그램을 온라인 트랜잭션 처리 (OLTP)을 주로 설계 InnoDB의 트랜잭션 스토리지 엔진. 그것은 외래 키에 대한 행 잠금 디자인, 지원 기능, 기본 동작은 고정되지 않습니다 읽어 오라클의 비 잠금 읽기, 유사 지원합니다. MySQL 데이터베이스 버전 5.5.8을 시작, InnoDB 스토리지 엔진은 기본 스토리지 엔진이다.

이노는 다중 버전 동시성 제어 (MVCC) 높은 동시성을 사용하여 수득하고, 표준 SQL 분리 레벨의 네 종류가 달성되고, 디폴트 REPEATABLE 레벨이다. 동시에, 피할 팬텀 옆에 키 잠금 전략라는 것을 사용하여 (팬텀) 현상을 읽습니다. 또한 이노 스토리지 엔진은 또한 완충 삽입 (삽입 버퍼), 보조 기록 (번 쓰기), 적응 해시 인덱스 (적응 해시 인덱스), 프리 - 읽기 (미리 읽기) 및 고성능의 이용 가능성을 제공한다 기능.

테이블의 데이터를 저장하기위한 이노 스토리지 엔진의 사용은 각각의 테이블이 순차적으로 저장하기위한 기본 키에 저장되도록, 모드 (클러스터)를 응집. 기본 키 정의 테이블, 이노 스토리지 엔진은 각 행에 6 바이트 ROWID를 생성하고, 기본 키로 경우 명시 적으로 지정하지 않는 경우.

2.2의 MyISAM 스토리지 엔진 #

의 MyISAM 스토리지 엔진은 거래, 주로 OLAP 데이터베이스 응용 프로그램의 일부, 전체 텍스트 인덱싱을 지원하도록 설계 테이블 잠금을 지원하지 않습니다. 또한, 또 다른 독특한 장소의 MyISAM 스토리지 엔진은 유일한 버퍼링없이 풀 캐시 (캐시) 인덱스 파일, 데이터 파일을 버퍼,이 점은 데이터베이스의 대부분은 매우 다릅니다. 일반 응용 프로그램 요구 사항을 충족하기에 충분 5.0 버전의 MyISAM 기본 지원 256TB 하나의 테이블 데이터를 시작.

2.3 메모리 스토리지 엔진 #

데이터베이스 재시작 또는 충돌이 발생하는 경우 (이전 HEAP 스토리지 엔진이라고도 함) 메모리 스토리지 엔진 메모리에 저장된 테이블의 데이터는, 테이블의 데이터가 사라지게된다. 이것은 이상적인 임시 데이터 저장 임시 테이블, 테이블 및 위도 데이터웨어 하우스에 적합하다. 메모리 스토리지 엔진은 오히려 익숙한 B + 트리 인덱스보다 기본적으로 해시 인덱스를 사용합니다.

메모리 스토리지 엔진은 매우 빠르지 만 일부 사용 제한은 여전히 ​​존재하지만. 예를 들어, 전용 테이블 잠금 가난한 동시성을 지원하고, 지원 TEXT 및 BLOB 컬럼 유형하지 않습니다. 가변 길이 필드를 저장할 때 가장 중요한 (VARCHAR) 방식 정상 필드 (문자)에서 수행되기 때문에 메모리를 낭비.

또한 쉽게 MySQL 데이터베이스 쿼리 (중간 결과)의 중간 결과 집합을 저장할 임시 테이블로 메모리 스토리지 엔진을 사용하여, 간과 조금이있다. 중간 결과는 디스크에 저장 될 MySQL 데이터베이스 저장 엔진 MyISAM 테이블 변환한다 TEXT 또는 BLOB 컬럼 타입 필드를 포함하는 일련의 메모리 용량 설정 테이블 기억 엔진 또는 중간 결과,보다 큰 경우. 이전에 언급의 MyISAM하지 캐시 데이터 파일을 수행, 따라서 질의의이 시간에 생성 된 임시 테이블의 성능은 손실됩니다.

2.4 아카이브 스토리지 엔진 #

처음부터 아카이브 스토리지 엔진을 지원하는 유일한 INSERT 및 SELECT 작업은 MySQL의 5.1 인덱스를 지원합니다. 데이터 행 (행)을 이용하여 보관 스토리지 엔진 ZLIB 알고리즘은 압축 후 통상 1:10까지의 압축비를 저장한다. 그 이름이 의미하는 바와 같이, 보관 스토리지 엔진은 이러한 로그 정보로서 보관 된 데이터를 저장하도록 구성된다. 아카이브 스토리지 엔진은 높은 동시 삽입 작업을 달성하기 위해 행 잠금을 사용하지만, 그 자체가 고속 삽입 및 압축을 제공하기 위해 주로 설계된 안전한 트랜잭션 스토리지 엔진 아니다.

물론, MySQL은 많은 다른 스토리지 엔진이 여기 나열하지 않습니다 지원합니다.

3. 스토리지 통합 엔진 비교

스토리지 엔진은 테이블의 저장 구조로서 이해 될 수 있으며, 각각의 스토리지 엔진은 서로 다른 기능을 지원한다. 플러그 스토리지 엔진을 지원하는 MySQL은, 서로 다른 스토리지 엔진 각 데이터 테이블을 지정할 수 있습니다. 다음과 같이 전체가 같이 일반적으로 사용되는 스토리지 엔진 특징 :

우리는 또한 어떤 지원 현재 데이터베이스 스토리지 엔진을 보려면 다음 명령을 사용할 수 있습니다 :

-- 查看支持的存储引擎
show engines;

다음으로, 세 가지 가장 일반적으로 사용되는 스토리지 엔진은 간단한 요약 소개를 할 :

  • InnoDB는 : 지원 트랜잭션 지원 행 수준 잠금 및 테이블 수준 잠금이하는 인덱스의 다양한 외래 키 지원을 지원하는 것을 MySQL의 기본 스토리지 엔진은, MySQL의 높은 버전은 전체 텍스트 인덱싱을 지원하지만 낮은 벌크 데이터는 효율성을 삽입;
  • 의 MyISAM : 높은 효율성과 데이터를 데이터 쿼리 속도로, 전체 텍스트 인덱싱에 대한 지원하지만, 데이터베이스 트랜잭션을 지원하지 않습니다와 함께, 행 수준 잠금, 지원 전용 테이블 수준의 잠금을 지원하지 않습니다;
  • MEMORY :이 스토리지 엔진을 사용하는 경우, 테이블의 데이터가 메모리에로드, 신속하게 조회 할뿐만 높은 메모리 요구 사항.

우리는 적절한 스토리지 엔진의 응용 프로그램의 특정 요구 사항에 따라 선택해야합니다 그래서, 모든 생각없이 기본 스토리지 엔진 (INNODB)을 선택합니다.

당신이 커밋 롤백 및 거래 안전 (ACID를 준수) 기능 및 동시성 제어를 달성하기 위해 요구 사항을 복구 제공하려는 경우, InnoDB는 좋은 선택입니다. 데이터 테이블에 삽입하고, 기록을 위해 주로 질의 경우의 MyISAM 엔진은 높은 처리 효율을 제공한다. 일시적으로 저장된 데이터, 데이터의 양, 그리고하지 않은 높은 데이터 보안이 필요한 경우 쿼리의 중간 결과를 저장하기 위해 임시 테이블로 엔진을 사용 MySQL은, 메모리 MEMORY 엔진에 저장된 데이터를 선택할 수 있습니다. 오직 INSERT와 SELECT 작업, 당신은 아카이브 엔진을 선택할 수있는 경우, 아카이브 스토리지 엔진은 높은 동시 삽입 작업을 지원하지만, 거래 자체가 안전하지 않습니다. 아카이브 스토리지 엔진이 로깅 정보를 보관 엔진으로 사용될 수 있으며, 보관 데이터를 저장하도록 구성된다.

추천

출처www.cnblogs.com/itps/p/12334215.html