[ 서버 & DB 관련 ]/MySQL
MyISAM, InnoDB 설정 관련
BIZLAB
2024. 5. 27. 11:47
참고 : https://devlink.tistory.com/294
InnoDB
장점:
- 트랜잭션 지원: InnoDB는 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 지원하며, 롤백 및 커밋 기능이 있습니다.
- 외래 키 지원: 데이터 무결성을 보장하기 위해 외래 키를 사용할 수 있습니다.
- MVCC(다중 버전 동시성 제어): 읽기 작업과 쓰기 작업이 동시에 이루어질 수 있도록 하여 높은 동시성을 제공합니다.
- 충돌 복구: 자동 충돌 복구 기능이 있어 데이터 손실을 방지할 수 있습니다.
- 잠금 메커니즘: 테이블 잠금 대신 행 잠금을 사용하여 높은 동시성을 보장합니다.
단점:
- 복잡성: MyISAM보다 복잡하며, 설정 및 튜닝이 더 어려울 수 있습니다.
- 디스크 사용량: 일반적으로 MyISAM보다 더 많은 디스크 공간을 사용합니다.
MyISAM
장점:
- 읽기 속도: InnoDB보다 읽기 작업이 더 빠를 수 있습니다.
- 단순성: 구조가 단순하고 설정이 쉽습니다.
- 전체 텍스트 검색: 전체 텍스트 검색 기능이 있으며, 이는 MyISAM의 강점 중 하나입니다.
단점:
- 트랜잭션 미지원: ACID 트랜잭션을 지원하지 않습니다.
- 외래 키 미지원: 외래 키 제약 조건을 사용할 수 없습니다.
- 테이블 잠금: 행 잠금 대신 테이블 잠금을 사용하여 동시성이 떨어질 수 있습니다.
- 충돌 복구 부족: 충돌 복구 기능이 부족하여 데이터 손실 위험이 있습니다.
성능 비교
- 읽기 작업: MyISAM이 더 빠를 수 있습니다. 특히, 단순 조회와 같은 읽기 집약적인 작업에서는 MyISAM이 유리합니다.
- 쓰기 작업: InnoDB가 더 유리합니다. 트랜잭션을 지원하며, 행 잠금을 사용하기 때문에 동시 쓰기 작업에서 성능이 더 좋습니다.
- 데이터 무결성: InnoDB가 훨씬 더 나은 선택입니다. 트랜잭션과 외래 키를 지원하여 데이터 무결성을 보장합니다.
- 동시성: InnoDB가 우수합니다. MVCC와 행 잠금을 사용하여 높은 동시성을 제공합니다.
- 복구: InnoDB는 충돌 복구 기능이 있어 시스템 장애 후 데이터 복구가 용이합니다.
결론
- 데이터 무결성, 동시성, 트랜잭션이 중요한 경우: InnoDB가 더 나은 선택입니다.
- 읽기 성능이 중요한 경우: MyISAM이 더 나을 수 있습니다. 그러나 데이터 무결성과 동시성을 희생해야 합니다.
대부분의 현대적인 애플리케이션에서는 데이터 무결성과 동시성이 중요하기 때문에 InnoDB가 더 나은 선택입니다. MyISAM은 특정 읽기 집약적인 작업이나 전체 텍스트 검색이 중요한 경우에 유용할 수 있습니다.
특정 데이터베이스의 모든 테이블 엔진 확인
SELECT table_name, engine
FROM information_schema.tables
WHERE table_schema = 'my_database';
특정 테이블의 엔진 확인
SELECT table_name, engine
FROM information_schema.tables
WHERE table_schema = 'my_database'
AND table_name = 'my_table';