MySQL의 데이터는 다양한 기술을 사용하여 파일(또는 메모리)에 저장됩니다. 이러한 각 기술은 서로 다른 저장 메커니즘, 인덱싱 기술, 잠금 수준을 사용하며 궁극적으로 다양한 기능과 기능을 제공합니다. 다양한 기술을 선택하면 앱의 전반적인 기능을 향상시키는 추가적인 속도나 기능을 얻을 수 있습니다.
MySQL에는 여러 스토리지 엔진이 있으며 MyISAM과 InnoDB는 일반적으로 사용되는 두 가지 엔진입니다. 다음은 이 두 엔진에 대한 몇 가지 기본 개념입니다(자세한 소개는 아님).
MyISAM은 MySQL의 기본 스토리지 엔진으로, 기존 ISAM 유형을 기반으로 하며 전체 텍스트 검색을 지원하지만 트랜잭션에 안전하지 않으며 외래 키를 지원하지 않습니다. 각 MyISAM 테이블은 세 개의 파일에 저장됩니다. frm 파일은 테이블 정의를 저장하고, 데이터 파일은 MYD(MYData)이고, 인덱스 파일은 MYI(MYIndex)입니다.
InnoDB는 롤백, 충돌 복구, 다중 버전 동시성 제어, ACID 트랜잭션 및 행 수준 잠금을 지원하는 트랜잭션 엔진입니다(InnoDB 테이블의 행 잠금은 절대적이지 않습니다. MySQL이 SQL 실행 시 스캔을 결정할 수 없는 경우) 범위 내에서 InnoDB 테이블은 유사한 작업 중 SQL 문과 같은 전체 테이블을 잠그고 Oracle 유형과 일치하는 잠금 없는 읽기 방법을 제공합니다. InnoDB는 여러 파일을 포함할 수 있는 테이블스페이스에 테이블과 인덱스를 저장합니다.
주요 차이점:
MyISAM은 트랜잭션이 안전하지 않은 반면 InnoDB는 트랜잭션이 안전합니다.
MyISAM 잠금 세분성은 테이블 수준인 반면 InnoDB는 행 수준 잠금을 지원합니다.
MyISAM은 전체 텍스트 유형의 인덱스를 지원하지만 InnoDB는 전체 텍스트 인덱스를 지원하지 않습니다.
MyISAM은 상대적으로 간단하므로 효율성 측면에서 InnoDB보다 낫습니다. 소규모 애플리케이션에서는 MyISAM 사용을 고려할 수 있습니다.
MyISAM 테이블은 파일로 저장됩니다. 크로스 플랫폼 데이터 전송에서 MyISAM 스토리지를 사용하면 많은 문제가 해결됩니다.
InnoDB 테이블은 MyISAM 테이블보다 더 안전합니다. 데이터가 손실되지 않도록 하면서 비트랜잭션 테이블을 트랜잭션 테이블로 전환할 수 있습니다(alter table tablename type=innodb).
애플리케이션 시나리오:
MyISAM은 비트랜잭션 테이블을 관리합니다. 고속 저장 및 검색은 물론 전체 텍스트 검색 기능도 제공합니다. 애플리케이션이 많은 수의 SELECT 쿼리를 수행해야 하는 경우 MyISAM이 더 나은 선택입니다.
InnoDB는 트랜잭션 처리 애플리케이션에 사용되며 ACID 트랜잭션 지원을 포함한 다양한 기능을 갖추고 있습니다. 애플리케이션이 많은 수의 INSERT 또는 UPDATE 작업을 수행해야 하는 경우 다중 사용자 동시 작업의 성능을 향상시킬 수 있는 InnoDB를 사용해야 합니다.
일반적으로 사용되는 명령:
(1) 테이블의 저장 유형 보기(세 가지 유형):
show create table tablename
show table status from dbname where name=tablename
mysqlshow -u user -p 비밀번호 --status dbname tablename
(2) 테이블의 스토리지 엔진을 수정합니다:
alter table tablename type=InnoDB
(3) 새로 게시된 테이블이 기본적으로 트랜잭션을 사용하도록 명령줄에 다음 매개변수를 추가하여 mysql 데이터베이스를 시작합니다.
--default-table- type=InnoDB
(4) 기본 테이블 유형을 일시적으로 변경합니다.
set table_type=InnoDB
show Variables like 'table_type'
위는 MySQL의 두 가지 스토리지 엔진에 대한 간략한 소개입니다. MyISAM과 InnoDB, 그리고 두 엔진의 차이점 차이점 소개.
관련 권장 사항:
mysql 트랜잭션 및 mysql 스토리지 엔진_MySQL
위 내용은 MySQL 스토리지 엔진 MyISAM과 InnoDB 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!