MYSQL 데이터베이스 엔진 MYISAM과 INNODB의 차이점

3228 단어
MysQL 데이터베이스에는 여러 가지 저장 엔진이 있다. 예를 들어 MyISAM, InnoDB, MERGE, MEMORY(HEAP), BDB(BerkeleyDB), EXAMPLE, FEDERATED, ARCHIVE, CSV, BLACKHOLE 등이다. 가장 흔히 볼 수 있는 것은 MyISAM과 InnoDB이다. 다음은 MyISAM과 InnoDB 두 가지 mysql 데이터베이스 저장 엔진의 차이점을 설명한다.
MyISAM 엔진은 비사무적인 엔진으로 고속 저장과 검색, 전문 검색 능력을 제공하여 데이터 창고 등 조회가 빈번한 응용에 적합하다.MyISAM에서는 테이블 하나가 실제로 세 개의 파일로 저장됩니다.frm 메모리 테이블 정의,.MYD는 데이터를 저장합니다.MYI 저장소 인덱스.MyISAM은 모든 MySQL 설정에서 지원됩니다. MySQL을 설정하면 기본적으로 다른 엔진을 사용합니다.MySQL 서버의 다른 비사무적 저장 엔진(예를 들어 MyISAM)은 서로 다른 데이터 완전성 범례를 따라'원자 조작'이라고 부른다.사무 용어에 따르면 MyISAM표는 항상 AUTOCOMMIT=1 모드에서 효율적으로 작동할 수 있다.원자 조작은 통상적으로 비교할 수 있는 완전성과 더 좋은 성능을 제공할 수 있다.최적화 조정을 거친 가장 빠른 사무성표에 비해 속도가 3~5배 빠르다.MySQL 서버는 두 가지 예를 지원하기 때문에, 원자 조작의 속도를 이용하여 응용 프로그램에 더 잘 서비스를 할지, 사무 특성을 사용할지 결정할 수 있습니다.이 선택은 표에 따라 진행할 수 있다.InnoDB는 사무를 지원하는 엔진이다.MySQL에 제출, 스크롤, 충돌 복구 능력이 있는 사무 보안 (ACID 호환) 저장 엔진을 제공합니다.따라서 데이터는 Oracle과 유사한 잠금 메커니즘을 지원하는 하나 이상의 데이터 파일에 저장됩니다.일반적으로 OLTP 애플리케이션에 널리 사용됩니다.InnoDB 설정 옵션이 지정되지 않으면, MySQL은 MySQL 데이터 디렉터리에 ibdata1이라는 자동 확장 데이터 파일을 만들고, 두 개의 이름은 iblogfile0 및 iblogfile1의 로그 파일입니다.InnoDB는 줄 단계를 잠그고 SELECT 문장에 Oracle 스타일과 일치하는 비잠금 읽기를 제공합니다.이러한 특징들은 다중 사용자 배치와 성능을 증가시켰다.이노DB에서 잠금을 확대할 필요가 없습니다. 왜냐하면 이노DB에서 행급 잠금은 매우 작은 공간에 적합하기 때문입니다.이노DB는 FOREIGN KEY 강제도 지원한다.SQL 검색에서, 당신은 자유롭게 InnoDB 유형의 테이블을 다른 MySQL 테이블의 유형과 혼합할 수 있으며, 심지어 같은 검색에서도 혼합할 수 있다.InnoDB는 엄청난 양의 데이터를 처리할 때 가장 큰 성능을 발휘하도록 설계되었습니다.그것의 CPU 효율은 다른 디스크 기반 관계 데이터베이스 엔진에 필적할 수 없을 것이다.InnoDB 저장 엔진은 MySQL 서버와 완전히 통합되었고, InnoDB 저장 엔진은 메인 메모리에 데이터와 인덱스를 캐시하기 위해 버퍼를 유지합니다.InnoDB는 테이블 & 인덱스를 테이블 공간에 저장합니다. 테이블 공간에는 여러 개의 파일을 포함할 수 있습니다.InnoDB 테이블은 파일 크기가 2GB로 제한된 운영 체제에서도 모든 크기가 될 수 있습니다.InnoDB도 기본적으로 모든 MySQL 5.1 바이너리 배포판에 포함됩니다.
요약은 다음과 같습니다.
1. 스토리지 패브릭
MyISAM: 각 MyISAM은 디스크에 세 개의 파일로 저장됩니다.첫 번째 파일의 이름은 테이블의 이름으로 시작하고 확장자는 파일 형식을 가리킨다.frm 파일 저장표 정의입니다.데이터 파일의 확장자는 입니다.MYD (MYData).색인 파일의 확장자는.MYI (MYIndex). InnoDB: 모든 테이블은 같은 데이터 파일에 저장됩니다. (여러 파일일 수도 있고 독립된 테이블 공간 파일일 수도 있습니다.) InnoDB 테이블의 크기는 운영체제 파일의 크기에만 제한됩니다. 보통 2GB입니다.
2. 저장 공간
MyISAM: 압축이 가능하며 저장 공간이 작습니다.세 가지 다른 저장 형식을 지원합니다: 정적 테이블 (기본값이지만 데이터 끝에 빈칸이 없으면 삭제됩니다), 동적 테이블, 압축 테이블.InnoDB: 더 많은 메모리와 저장이 필요합니다. 메인 메모리에 전용 버퍼를 만들어서 고속 버퍼 데이터와 인덱스에 사용합니다.
3. 사무 지원
MyISAM: 강조한 것은 성능입니다. 매번 조회는 원자성을 가지고 있으며, 실행 수량은 InnoDB 형식보다 빠르지만, 사무 지원을 제공하지 않습니다.InnoDB: 사무 지원 사무, 외부 키 등 고급 데이터베이스 기능을 제공합니다.트랜잭션(commit), 롤백(rollback) 및 충돌 복구 기능(crash recovery capabilities)이 있는 트랜잭션 보안(transaction-safe(ACID compliant) 테이블
4. CURD 작업
MyISAM: 많은 양의 SELECT를 실행할 경우 MyISAM이 더 좋은 선택입니다.(줄 자물쇠가 지원되지 않기 때문에) 삭제할 때 전체 표를 잠가야 하기 때문에 효율이 낮아집니다.관련 사항은 innodb에서 줄 자물쇠를 지원하기 때문에 삽입을 삭제할 때 줄을 잠그고 바꾸기만 하면 됩니다. 효율이 비교적 높은 InnoDB: 만약에 데이터가 대량의 INSERT나 UPDATE를 실행한다면 성능적인 측면에서 InnoDB표를 사용해야 합니다.DELETE는 성능상 InnoDB가 더 좋지만, DELETE FROM table에서는 테이블을 다시 만들지 않고, 한 줄 한 줄 삭제합니다. innodb에 대량의 데이터가 저장된 테이블을 비우려면 truncate table 명령을 사용하는 것이 좋습니다.
5. 외부 키
MyISAM: InnoDB 지원되지 않음: 지원
MySQL 데이터베이스 유형이 InnoDB에서 MyISAM으로 변환
USE     ;
SHOW TABLES;
ALTER TABLE    ENGINE=MYISAM;

자주 사용하는 수정 사항
MySQL 데이터베이스 엔진 수정은 INNODB:1이고 먼저 my를 수정합니다.ini, [mysqld]에서 다음을 추가합니다.
default-storage-engine=INNODB
2. sql 문구로 이미 만들어진 테이블의 엔진을 수정합니다.
alter table은 type=InnoDB를 표시합니다.

좋은 웹페이지 즐겨찾기