source

MySQL의 InnoDB와 MyISAM은 무엇입니까?

manycodes 2022. 11. 25. 20:53
반응형

MySQL의 InnoDB와 MyISAM은 무엇입니까?

죠?InnoDB ★★★★★★★★★★★★★★★★★」MyISAMMySQL

InnoDB ★★★★★★★★★★★★★★★★★」MYISAM는 의 스토리지 엔진입니다.MySQL

두 : implement implement 2 these these 2 개 、 릅 2 、 릅 、 릅릅 。InnoDB내의 .또, 「 」는 「 」의 「 」의 「잠금」을 참조해 주세요.MyISAM로 잠그다MySQL

할 수 .MYISAM ★★★InnoDBDB입니다.

봐주세요

InnoDBMyISAM

InnoDB는 MySQL AB에서 배포하는 모든 현재 바이너리에 표준으로 포함된 MySQL용 스토리지 엔진입니다.MySQL에서 사용할 수 있는 다른 스토리지 엔진보다 향상된 주요 기능은 ACID 호환 트랜잭션 지원입니다.

MyISAM은 5.5 1 이전 버전의 MySQL 릴레이셔널 데이터베이스 관리 시스템용 기본 스토리지 엔진입니다.오래된 ISAM 코드를 기반으로 하지만 많은 유용한 확장자를 가지고 있습니다.MyISAM의 가장 큰 단점은 거래 지원이 없다는 것입니다.MySQL 5.5 이상 버전은 참조 무결성 제약과 높은 동시성을 보장하기 위해 InnoDB 엔진으로 전환되었습니다.

스토리지 엔진입니다.

http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html

MyISAM: 기본 MySQL 스토리지 엔진으로 웹, 데이터 웨어하우징 및 기타 애플리케이션 환경에서 가장 많이 사용되는 엔진입니다.MyISAM은 모든 MySQL 구성에서 지원되며 기본적으로 다른 MySQL을 사용하도록 구성한 경우를 제외하고 기본 스토리지 엔진입니다.

InnoDB: 사용자 데이터를 보호하는 커밋, 롤백 및 크래시 복구 기능을 갖춘 MySQL용 트랜잭션 세이프(ACID 준수) 스토리지 엔진입니다.InnoDB 행 레벨 잠금(높은 정밀도 잠금으로 에스컬레이션되지 않음) 및 오라클 스타일의 일관된 비잠금 읽기 기능은 여러 사용자의 동시성과 성능을 향상시킵니다.InnoDB는 사용자 데이터를 클러스터된 인덱스에 저장하여 기본 키에 기반한 일반적인 쿼리의 I/O를 줄입니다.데이터 무결성을 유지하기 위해 InnoDB는 FORENAL KEY 참조 무결성 제약도 지원합니다.

InnoDB는 MySQL의 트랜잭션 스토리지 엔진이며 MyISAM은 비트랜잭션 스토리지 엔진입니다.즉, InnoDB는 데이터의 무결성을 유지하기 위해 ACID 특성을 따르지만 MyISAM은 ACID 특성을 따르지 않아 데이터의 무결성을 유지하지 못한다.

InnoDB(트랜잭션) 테이블에서는 롤백이 필요한 경우 트랜잭션 변경을 쉽게 취소할 수 있습니다.그러나 MyISAM(비트랜잭션) 테이블에 대한 변경은 트랜잭션을 롤백해야 할 때 취소할 수 없습니다.

예를 들어, 당좌예금 계좌에서 저축 계좌로 돈을 이체하려고 합니다.이 작업은 5개의 쿼리를 포함하는 트랜잭션에 의해 수행됩니다.

1 START TRANSACTION;
2 SELECT balance FROM checking WHERE customer_id = 10233276;
3 UPDATE checking SET balance = balance - 200.00 WHERE customer_id = 10233276;
4 UPDATE savings SET balance = balance + 200.00 WHERE customer_id = 10233276;
5 COMMIT;

4단계에서 공정이 충돌한다고 가정합니다.여기서 InnoDB 테이블을 사용하면 롤백으로 변경이 취소되므로 비용 손실의 위험에서 벗어날 수 있습니다.말 그대로 스텝5가 정상적으로 실행되지 않는 한 변경이 테이블에 커밋되지 않기 때문에 테이블은 크래시를 인식하지 않습니다.

그러나 MyISAM 테이블의 경우 롤백이 호출되거나 트랜잭션의 실패로 이어지는 크래시가 발생했을 때 트랜잭션 변경을 취소할 수 없습니다.즉, 3단계에서 거래가 중단되면 당좌예금 계좌에서 돈이 차감됩니다.하지만 당신의 예금 계좌에 돈이 추가되지는 않았을 거예요.

예: "하이 퍼포먼스 MySQL: 최적화, 백업 및 복제" - Arjen Lentz, Derek J. Balling, Jeremy Zawodny, Peter Zaitsev 및 Vadim Tkhenko의 책

테이블마다 특정 스토리지 엔진을 지정할 수 있는 기능이 MySQL의 주요 강점 중 하나라는 점을 덧붙이고 싶습니다(단순한 사용 및 뛰어난 성능, 조정 없음).트랜잭션이 필요한 모든 작업은 InnoDB를 따르기만 하면 됩니다.그러나 MyISAM은 특정 상황에서 트랜잭션이 필요하지 않을 때 작업을 가속화할 수 있으며 InnoDB에 비해 디스크 용량과 RAM이 적게 필요합니다.

InnoDB는 항상 개선되고 있습니다.

InnoDB 1.1 퍼포먼스와 확장성 향상

데이터의 무결성을 유지하기 위해 트랜잭션을 따르는 InnoDB와 달리 MyISAM은 ACID를 따르지 않습니다.

MyISAM은 동시 삽입을 지원합니다.테이블에 데이터 파일 중간에 빈 블록이 없는 경우 다른 스레드가 테이블에서 읽고 있는 것과 동시에 새 행을 삽입할 수 있습니다.MySqlDoc

그래서 MyISAM은 더 빠르고 공간도 덜 차지해요.예를 들어 MySQL MyISAM Storage Engine은 MySQL MYISAM의 transactions.consurrent-insert라는 비트가 있습니다.기본적으로 변수는 1로 설정되며 동시 삽입은 앞서 설명한 대로 처리됩니다.0으로 설정하면 동시 삽입이 비활성화됩니다.2로 설정하면 행을 삭제한 테이블에서도 테이블 끝에 동시 삽입이 허용됩니다.INSERT 문을 실행하여 테이블 중앙에 홀/삭제된 행이 없는 경우(동시 삽입 시) 동시에 선택으로 테이블 끝에 행을 추가할 수 있습니다.

mysql InnoDB의 기본 분리 수준은 "Read Repeatable"입니다.MyISAM의 경우 트랜잭션은 없습니다.InnoDB는 로우 레벨 잠금을 사용하고 MyISAM은 테이블 레벨 잠금만 사용할 수 있기 때문에 InnoDB는 MyISAM보다 크래시 리보버리가 우수합니다.동시성 효과를 피하려면 MyISAM에서 테이블레벨 잠금을 수동으로 취득해야 한다.

MySQL 서버가 크래쉬 했을 때, 데이터는 큰 InnoDB 트랜잭션 파일보다 MyISAM 테이블 세트에서 훨씬 쉽게 복구할 수 있습니다.각 MyISAM 테이블에는 개별 파일이 있으며 크래시 중에 이 테이블에 대한 쓰기 작업이 수행되지 않았더라도 전혀 영향을 받지 않습니다.InnoDB의 경우 MySQL 서버 전체의 트랜잭션 파일을 크래시 후 다시 인덱싱해야 합니다.그것은 꽤 지저분해질 수 있다.

InnoDB는 기본 NOT myISAM https://dev.mysql.com/doc/refman/5.7/en/innodb-introduction.html "InnoDB는 기본 MySQL 스토리지 엔진입니다.다른 기본 스토리지 엔진을 구성하지 않은 경우, ENGINE= 절 없이 CREATE TABLE 문을 발행하면 InnoDB 테이블이 생성됩니다."

언급URL : https://stackoverflow.com/questions/3818759/what-is-innodb-and-myisam-in-mysql

반응형