MySQL 데이터베이스 엔진은 건축 당시의 MyISAM 또는 InnoDB의 테이블과 동일한 의미를 지정

A, ISAM와 이노의 정의


1. 월별

 

ISAM 계정으로 횟수를 취할 설계시 데이터베이스 쿼리의 수가 업데이트보다 훨씬 큰 잘 정의 된 시간 테스트 데이터 관리 테이블이다. 따라서, ISAM 속도 읽기 작업을 신속하게 수행하고, 메모리 및 스토리지 자원을 많이 차지하지 않습니다.

ISAM 두 가지 주요 단점은, 트랜잭션을 지원하지 않는 내결함성 수 없다는 것입니다 : 하드 드라이브 충돌하면, 데이터 파일을 복구 할 수 없습니다.

당신이 항상 복제 기능을 통해 실시간으로 모든 데이터를 백업해야합니다 미션 크리티컬 애플리케이션에 사용되는 ISAM 경우, MySQL은 같은 백업 응용 프로그램을 지원할 수 있습니다.

1.2 이노

 

이 명령 오류가 모든 명령이 롤백되는 결과가 발생했을 때 성공적으로 실행 된 명령 세트의 모든, 또는, 당신은 전자 금융 거래 통제 상상할 수 있도록합니다 매우 중요 트랜잭션 제어 기능을 제공합니다. 지원은 ROLLBACK 및 기타 트랜잭션 기능을 COMMIT.

MySQL의 최신 버전은 BDB는 이노의 완전한 발전의 호의에 대한 지원을 제거 할 계획했다.

 

 

두, IASM와 MyIASM 관계

: MyIASM IASM는 다음과 같은 확장자를 가진 테이블의 새 버전 인
바이너리 수준의 휴대 성.
NULL 열 인덱스.
가변 길이 라인은 ISAM 테이블보다 작은 파편이있다.
큰 파일을 지원합니다.
더 나은 인덱스 압축.
더 나은 아직 키 통계적 분포.
더 빠른 치료를 AUTO_INCREMENT.

셋째, 여러 지점

3.1, 트랜잭션 처리

InnoDB의 지원 트랜잭션 기능,의 MyISAM은 (등, 외래 키 포함)를 지원하지 않습니다.
MYISAM 실행 속도 빠르고 더 나은 성능을 제공합니다.

3.2, 선택, 갱신, 삽입, 삭제 操作

의 MyISAM : 당신은 선택을 많이 수행하는 경우의 MyISAM이 더 나은 선택이다

InnoDB는 : 당신은 성능상의 이유로, 데이터 INSERT 또는 UPDATE의 큰 숫자를 수행 할 경우, 당신은 InnoDB 테이블을 사용한다


3.3 다른 잠금 메커니즘

InnoDB의 행 레벨 잠금, MyISAM 테이블 수준 잠금.
주 : 데이터베이스를 결정할 수없는 경우, 행을 찾고, 전체 테이블을 잠글 될 것입니다.
예를 들면 : 갱신 테이블 세트 NUM = 10 여기서 "% 테스트 % '같은 이름;


룩업 테이블의 행 3.4, 다른 개수

의 MyISAM : 테이블에서 SELECT COUNT (*)를,의 MyISAM은 단순히 좋은 행의 수를 판독, 수 (*) 문이 작동 두 종류가 같은 테이블 조건을 포함하는 경우, 주목한다

이노 : 테이블에서, InnoDB에 다시 전체 테이블을 스캔 할 때 테이블의 특정 행 번호가 저장되지 않습니다 이노, 즉, 선택 개수의 구현 (*) 얼마나 많은 행을 계산


3.5 상이한 물리적 구조

의 MyISAM : 디스크에 세 개의 파일에 각각의 MyISAM 스토리지. 확장을 시작하는 테이블의 첫 번째 파일 이름의 이름은 파일 유형을 나타냅니다.
  .FRM 파일은 테이블을 저장합니다.
  .MYD (MYDATA)라는 이름의 확장 데이터 파일.
  확장 인덱스 파일은 .MYI (MYIndex)입니다

InnoDB의 : 디스크 기반 리소스는 InnoDB의 테이블 스페이스의 데이터 파일과 로그 파일이, InnoDB의 테이블 크기 만 운영 체제 파일의 크기, 일반적으로 2GB로 제한된다


3.6 다른기구 anto_increment


 더 빠른 처리 AUTO_INCREMENT


3.7 기타 :

왜의 MyISAM 쿼리 속도 이노 디비보다 빠르게 될 것입니다.
일이 많은 MYISAM 엔진보다 유지할 때 SELECT INNODB가한다;
1)의 데이터 블록을 캐시 INNODB는 오직 캐시 인덱스 MYISAM 블록 중간 저감 스왑 아웃 될 수있다 
2) 이노 어드레스 매핑 될 OFFSET 라인에 다음 차단하고 직접적 MYISAM 파일 기록, 빠른 INNODB에 비해 위치이다
또한 일관성 MVCC을 유지하기 위해 필요 3) INNODB; 아니지만 장면,하지만 그는 여전히 확인하고 관리 할 필요가
MVCC를 (다중 버전 동시성을 제어) 다중 버전 동시성 제어 
이노는 : MVCC 각 행 레코드 개의 추가적인 숨겨진 값을 추가하여 구현되며, 이들 두 값의 데이터의 라인이 생성 될 때의 기록은 다른 레코드는 데이터 행 만료 (하거나 ) 삭제됩니다. 이러한 이벤트가 발생할 때이 이벤트가 발생할 때 InnoDB는 반대로, 그것은 단지 스토리지 시스템의 버전 번호를 실제 시간을 저장하지 않습니다. 이 문제와 성장의 창조와 숫자입니다. 트랜잭션이 자신의 시스템 버전 번호를 시작할 때 각 트랜잭션이 기록됩니다. 데이터와 버전 번호의 거래의 각 행에 버전 번호를 확인해야하는 각 쿼리는 동일합니다. : 격리 수준이 REPEATABLE READ 인 경우이 전략은 특정 작업에 적용하는 방법을 때 보자
  다음 SELECT InnoDB의 데이터의 각 행은이 두 가지 조건을 충족하는지 확인해야한다
  적어도 그것을 1, InnoDB하지만 라인의 버전을 확인해야합니다 거래와 오래된을 해제 (즉, 버전 번호는 트랜잭션의 버전 번호보다 큰 경우). 이것은 트랜잭션이 시작되기 전에 문제가 있음을 보장하거나 트랜잭션이 생성되거나 데이터 라인을 수정할 때 라인 데이터가있을 때.
  도 2는 미정 또는 트랜잭션 버전보다 커야 이러한 데이터 라인의 버전을 삭제. 이것은 트랜잭션이 시작되기 전에 행이 삭제되지 않습니다 보장합니다.

추천

출처www.cnblogs.com/mashangsir/p/11324559.html