이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 14231|회답: 1

[출처] mysql에서 engine=innodb와 engine=myisam의 차이점

[링크 복사]
게시됨 2017. 7. 16. 오전 11:04:57 | | |
1/아이삼

ISAM은 데이터베이스가 업데이트되는 것보다 훨씬 더 자주 조회되도록 설계된 잘 정의되고 검증된 데이터 테이블 관리 방식입니다. 그 결과 ISAM은 읽기를 빠르게 수행하며 많은 메모리와 저장 공간을 차지하지 않습니다. ISAM의 두 가지 주요 단점은 트랜잭션 처리를 지원하지 않고, 결함에 대한 허용성이 없다는 점입니다: 하드 드라이브가 다운되면 데이터 파일을 복구할 수 없습니다. 미션 크리티컬 애플리케이션에 ISAM을 사용할 경우, 항상 모든 실시간 데이터를 백업해야 하며, MySQL은 복제 기능 덕분에 이러한 백업 애플리케이션을 지원할 수 있습니다.

2/InnoDB

트랜잭션 제어 기능을 제공하여 명령 집합이 성공적으로 실행되거나, 명령 오류가 발생했을 때 모든 명령의 결과를 롤백하도록 보장합니다. 거래 제어 능력이 전자은행에서 매우 중요하다고 상상할 수 있습니다. COMMIT, ROLLBACK 및 기타 트랜잭션 기능을 지원합니다. 최신 버전의 Mysql은 이미 BDB 지원을 중단하고 InnoDB를 사용할 계획입니다.

MyIASM은 다음과 같은 확장을 가진 IASM 테이블의 새로운 버전입니다:
이진 수준에서의 이동성.
NULL 컬럼 인덱스.
변수 행의 조각 수는 ISAM 테이블보다 적습니다.
대용량 파일 지원.
더 나은 인덱스 압축.
통계적 분포를 갖는 것이 더 나은가요?
더 빠르고 더 나은 auto_increment 처리.

다음은 몇 가지 세부 사항과 구체적인 구현 차이점입니다:

1. InnoDB는 FULLTEXT 유형의 인덱스를 지원하지 않습니다.
2. InnoDB에는 테이블이 저장되지 않습니다
특정 행, 즉 SELECT(*)를 실행합니다.
테이블에서 InnoDB는 전체 테이블을 스캔해 행 수를 계산하지만, MyISAM은 저장된 행만 읽습니다. count(*) 문장이 다음을 가질 때
여기서 조건 에서 두 테이블의 동작은 동일하다.
3. AUTO_INCREMENT 유형의 필드의 경우, 해당 필드만 포함된 인덱스는 InnoDB에 포함되어야 하지만, MyISAM 테이블에서는 다른 필드와 연합 인덱스를 생성할 수 있습니다.
4.삭제
FROM table에서는 InnoDB가 테이블을 다시 생성하지 않고 한 줄씩 삭제합니다.
5. 로트 테이블
MASTER 연산은 InnoDB에서는 작동하지 않으며, 해결책은 먼저 InnoDB 테이블을 MyISAM 테이블로 변경한 후 데이터를 가져오고, 그 다음 InnoDB 테이블로 바꾸는 것입니다. 하지만 추가 InnoDB 기능(예: 외래 키)을 사용하는 테이블에는 적용되지 않습니다.

또한, InnoDB 테이블의 행 잠금은 절대적이지 않으며, MySQL 문이 SQL 문장 실행 시 스캔할 범위를 결정하지 못하면 InnoDB 테이블도 전체 테이블(예: update)을 잠그게 됩니다
테이블 세트 num=1, 여기서 이름은 "a%" 같다.

어떤 테이블도 전지능하지 않으며, 비즈니스 유형에 맞는 적절한 테이블 유형을 선택해야만 MySQL의 성능 이점을 극대화할 수 있습니다.

MySQL
관리자가 데이터베이스를 생성할 때, 테이블은 기본적으로 InnoDB 타입으로 전환됩니다.

InnoDB, MyISAM
두 유형의 차이점은 무엇인가요: MyISAM 타입은 트랜잭션 처리와 같은 고급 처리를 지원하지 않는 반면, InnoDB 타입은 지원합니다.
MyISAM 유형의 테이블은 InnoDB 타입보다 몇 단계 더 빠르게 성능을 보이는 성능을 강조하지만, 트랜잭션 지원은 제공하지 않는 반면, InnoDB는 트랜잭션 지원, 외래키 등 고급 데이터베이스 기능을 제공합니다.

MyISAM 유형의 바이너리 데이터 파일은 서로 다른 운영 체제 간에 마이그레이션할 수 있습니다. 즉, Windows 시스템에서 리눅스 시스템으로 직접 복사할 수 있습니다.

표의 엔진 유형을 수정하기:

알터
테이블 테이블 이름 엔진 = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
순차 접근 방법
이 방법은 기록과 파일을 저장하는 표준 방법입니다. 다른 스토리지 엔진과 비교했을 때, MyISAM은 테이블 점검 및 복구를 위한 대부분의 도구를 갖추고 있습니다.
MyISAM 테이블은 압축이 가능하며, 전체 텍스트 검색을 지원합니다. 트랜잭션 보안이 아니며 외래 키를 지원하지 않습니다. 만약 롤백이 이루어지면, 그것은 불완전한 롤백을 일으키고 원자적 롤백이 아닙니다. 많은 수의 처형이 이루어진다면
TheSELECT, MyISAM이 더 나은 선택입니다.

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

지원하는 InnoDB 타입의 경우, 속도에 영향을 주는 주요 이유는 AUTOCOMMIT 기본 설정이 켜져 있고 프로그램이 명시적으로 BEGIN을 호출하지 않기 때문입니다
트랜잭션을 시작하면 삽입마다 자동으로 커밋이 이루어지는데, 이는 속도에 심각한 영향을 줍니다. SQL 실행 전에 start를 호출할 수 있고, 여러 SQL 조합은 한 가지 역할을 할 수 있습니다(자동 커밋이 발생하더라도
또한 켤 수도 있습니다), 이로 인해 성능이 크게 향상됩니다.

1. 사용된 엔진 유형, 문자 인코딩, 테이블 구조 등 테이블 정보를 확인

이 명령어를 사용하세요

mysql>
테이블 T1 만들기; --t1은 테이블 이름입니다

2.
비트랜잭션 테이블을 트랜잭션으로 전환하기 위해 다음 명령어를 실행할 수 있습니다(데이터가 손실되지 않음). innodb 테이블이 myisam 테이블보다 더 안전합니다:
alter table t1
type=innodb; --t1은 테이블 이름입니다

3.
innodb 테이블은 repair table 명령어와 myisamchk -r로 table_name할 수 없습니다
하지만 체크 테이블을 사용할 수 있습니다
T1, 그리고 MySQLCheck [옵션] 데이터베이스 [테이블]

4.
다음 매개변수들이 mysql 데이터베이스를 시작하기 위해 명령줄에 추가되어 새로 출시된 모든 MySQL 데이터 테이블이 기본적으로 트랜잭션을 사용하도록 설정되었습니다 (
이 기능은 Create 문에만 영향을 줍니다. )
--default-table-type=InnoDB

5.
기본 테이블 유형을 일시적으로 변경하는 방법은 다음과 같습니다:
set table_type=InnoDB;

마이이삼
장점: 빠른 속도, 차지하는 디스크 공간 감소; 데이터베이스나 테이블의 디스크 사용량은 운영체제가 해당 파일(폴더) 크기를 확인하거나 SQL 문인 SHOW TABLE STATUS를 사용하여 확인할 수 있습니다
단점: 데이터 무결성 메커니즘 없음, 즉 트랜잭션 및 외래키 지원 없음

인노DB
장점: 트랜잭션 및 외래키 지원, 완전한 데이터 무결성 메커니즘. 라이브러리나 테이블의 디스크 점유 여부를 확인하려면 SHOW TABLE STATUS를 사용할 수 있습니다
단점: 초느린 속도, 큰 디스크 공간; 모든 라이브러리는 보통 하나 또는 여러 파일에 저장되며, 운영체제는 라이브러리나 테이블의 공간 수를 알 수 없습니다

BDB
장점: 트랜잭션을 지원하며, 외래키를 지원하지 않습니다. 트랜잭션 지원을 기반으로 외래 키는 데이터베이스의 클라이언트 측(예: PHP의 서버 측일 수 있음)에서 간접적으로 구현할 수 있어 데이터 무결성이 보장됩니다;
단점: 느린 속도, 높은 디스크 사용량; SHOW TABLE STATUS를 통해 데이터베이스나 테이블의 공간 점유 상태를 조회할 수 없습니다. 운영체제는 라이브러리의 해당 폴더 크기나 테이블의 해당 파일 크기를 이해할 수 있지만, BDB 테이블은 항상 로그 파일을 생성해야 하며, 실제 디스크 점유 공간에는 로그 파일이 포함되어야 하므로 라이브러리나 테이블의 크기는 운영체제가 차지하는 실제 공간보다 항상 작습니다.




이전의:MySQL 테이블 필드 유형 속성이 자세히 설명되어 있습니다
다음:PHP 데이터베이스 접근 도구 Medoo
 집주인| 게시됨 2017. 7. 16. 오전 11:09:29 |
//更改引擎
alter table table name engine = MyISAM;

면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com