>  기사  >  데이터 베이스  >  Mysql 스토리지 엔진 InnoDB와 Myisam의 6가지 주요 차이점에 대한 설명

Mysql 스토리지 엔진 InnoDB와 Myisam의 6가지 주요 차이점에 대한 설명

怪我咯
怪我咯원래의
2017-05-07 11:39:031458검색

MyISAM
InnoDB
구성의 차이:

각 MyISAM은 디스크에 3개의 파일로 저장됩니다. 첫 번째 파일의 이름은 테이블 이름으로 시작하고 확장자는 파일 형식을 나타냅니다.

.frm 파일은 테이블 정의를 저장합니다.

데이터 파일의 확장자는 .MYD(MYData)입니다.

인덱스 파일의 확장자는 .MYI(MYIndex)입니다.

디스크 기반 리소스는 InnoDB 테이블스페이스 데이터 파일과 해당 로그 파일입니다. InnoDB 테이블의 크기는 운영 체제 파일 크기에 의해서만 제한되며 일반적으로 2GB


트랜잭션 처리:

MyISAM 유형 테이블은 성능을 강조하며 InnoDB 유형보다 실행 시간이 빠르지만 트랜잭션 지원을 제공하지 않습니다

InnoDB는 트랜잭션 지원, 외래 키 및 기타 고급 데이터베이스 기능을 제공합니다.

SELECT UPDATE, INSERT, 삭제작업

데이터가 SELECT를 많이 수행한다면 MyISAM이 더 나은 선택입니다


1.데이터가 INSERT 또는 UPDATE, 성능상의 이유로 InnoDB 테이블


2.DELETE FROM table을 사용해야 하며 InnoDB는 사용하지 않습니다. 테이블을 다시 만들고 행별로 삭제합니다.

3.LOAD TABLE FROM MASTER 작업이 InnoDB에서 작동하지 않습니다. 해결 방법은 먼저 InnoDB 테이블을 MyISAM 테이블로 변경하고 데이터를 가져온 다음 InnoDB 테이블로 변경하는 것입니다. , 그러나 추가 InnoDB 기능(예: 외래 키)을 사용하는 테이블의 경우

AUTO_INCREMENT 작업 테이블에서 AUTO_INCREMEN 열의 내부 처리에 따라.



MyISAM
INSERTUPDATE 작업에 대해 자동으로 업데이트됩니다. 이 칼럼 . 이렇게 하면 AUTO_INCREMENT 열이 더 빨라집니다(최소 10%). 시퀀스 상단의 값이 삭제되면 다시 사용할 수 없습니다. (AUTO_INCREMENT 컬럼이 다중 컬럼 인덱스의 마지막 컬럼으로 정의된 경우, 시퀀스의 최상위에서 제거된 값을 재사용하는 것이 가능하다.) AUTO_INCREMENT 값은 ALTER TABLE 또는 myisamch로 재설정할 수 있습니다.

AUTO_INCREMENT 유형 필드의 경우 InnoDB는 이 필드만 포함하는 인덱스를 포함해야 하지만 MyISAM 테이블에서는 다른 필드를 사용하여 생성할 수 있습니다. 통합 인덱스

더 좋고 더 빠른 auto_increment 처리

테이블에 AUTO_INCREMENT 열을 지정하면 데이터 사전의 InnoDB 테이블 핸들에는 자동 증가 카운터라는 카운터가 포함됩니다. 열에 새 값을 추가합니다.


자동 증가 카운터는 디스크가 아닌 메인 메모리에만 저장됩니다.

이 계산기의 알고리즘 구현은


을 참조하세요.
InnoDB테이블의 특정 행 수
열 작동 방식 > 테이블에서 count(*)를 선택하면 MyISAM은 단순히 저장된 행 수를 읽습니다. count(*) 문에 where 조건이 포함된 경우 두 테이블의 작업은 동일합니다.

InnoDB는 테이블의 특정 행 수를 저장하지 않습니다. 즉, 테이블에서 select count(*)를 실행할 때 InnoDB는 행 수를 계산하기 위해 전체 테이블을 스캔해야 합니다

잠금


테이블 잠금
행 잠금(행 수준 잠금)을 제공하고 Oracle 유형과 일치하는

SELECT에서 비잠금 읽기를 제공합니다. InnoDB 테이블의 행 잠금은 절대적이지 않습니다. MySQL이 SQL 문을 실행할 때 스캔할 범위를 결정할 수 없는 경우 InnoDB 테이블은 전체 테이블도 잠급니다(예: update table set num=1 where name like “%). 아아%”


-->

위 내용은 Mysql 스토리지 엔진 InnoDB와 Myisam의 6가지 주요 차이점에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.