이 글은 MySQL에서 MyISAM과 InnoDB의 차이점을 주로 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
MyISAM과 InnoDB의 차이점:
1. MySQL은 기본적으로 MyISAM을 사용합니다.
2.MyISAM은 트랜잭션을 지원하지 않지만 InnoDB는 지원합니다. InnoDB의 AUTOCOMMIT은 기본적으로 켜져 있습니다. 즉, 각 SQL 문은 기본적으로 트랜잭션으로 캡슐화되고 자동으로 제출됩니다. 이는 속도에 영향을 미치므로 트랜잭션을 형성하기 위해 시작과 커밋 사이에 여러 SQL 문을 표시하는 것이 가장 좋습니다. 가서 제출하세요.
3.InnoDB는 데이터 행 잠금을 지원하는 반면 MyISAM은 행 잠금을 지원하지 않고 전체 테이블 잠금만 지원합니다. 지금 바로 동일한 MyISAM 테이블에 대한 읽기 잠금과 쓰기 잠금은 상호 배타적입니다. MyISAM이 동시에 읽고 쓸 때 대기 큐에 읽기 요청과 쓰기 요청이 모두 있으면 읽기 요청이 있더라도 기본 쓰기 요청의 우선 순위가 더 높습니다. 먼저 도착하니까 MyISAM은 쿼리 프로세스가 오랫동안 차단되므로 많은 수의 쿼리와 수정이 공존하는 상황에는 적합하지 않습니다. MyISAM은 잠금 테이블이기 때문에 시간이 많이 걸리는 읽기 작업으로 인해 다른 쓰기 프로세스가 중단됩니다.
4.InnoDB는 외래 키를 지원하지만 MyISAM은 지원하지 않습니다.
5.InnoDB의 기본 키 범위는 MyISAM보다 최대 2배 더 넓습니다.
6.InnoDB는 전체 텍스트 인덱싱을 지원하지 않지만 MyISAM은 지원합니다. 전체 텍스트 인덱스는 char을 참조합니다. varchar 및 텍스트의 각 단어에 대해 역정렬된 색인을 만듭니다(불용 단어 제외). MyISAM의 전체 텍스트 인덱스는 중국어 단어 분할을 지원하지 않기 때문에 실제로 쓸모가 없습니다. 사용자는 단어 분할 후에 공백을 추가해야 합니다. 그런 다음 그리드가 데이터 테이블에 기록되고 한자가 4자 미만인 단어는 중지 단어처럼 무시됩니다.
7.MyISAM은 GIS 데이터를 지원하지만 InnoDB는 지원하지 않습니다. 즉, MyISAM은 Point, Line, Polygon, Surface 등의 공간 데이터 개체를 지원합니다.
8. MyISAM을 사용하지 않는 Count(*)는 InnoDB보다 훨씬 빠릅니다. 왜냐하면 MyISAM에는 카운터가 내장되어 있습니다. count(*)일 때 카운터에서 직접 읽는 반면 InnoDB는 전체 테이블을 스캔해야 합니다. 따라서 InnoDB에서 count(*)를 실행하면 일반적으로 where 및 where가 기본 키 이외의 인덱스 열을 포함해야 합니다. 여기서 "기본 키 이외의 것"을 특별히 강조하는 이유는 무엇입니까? InnoDB의 기본 인덱스는 raw와 동일하기 때문에 데이터는 함께 저장되고 보조 인덱스는 별도로 저장되며 기본 인덱스를 가리키는 포인터가 있습니다. 열쇠. 따라서 단순히 count(*)일 경우 보조 인덱스를 사용하여 스캔하는 것이 더 빠르며, 기본 키는 인덱스를 스캔할 때 주로 raw를 반환합니다. 데이터를 사용할 때 역할이 더 커집니다.
더 많은 MySQL 지식을 보려면 MySQL 비디오 튜토리얼 또는 MySQL 매뉴얼을 참조하세요!
위 내용은 MySQL의 MyISAM과 InnoDB의 차이점 [상세 설명]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!