InnoDB는 트랜잭션, 외래 키 제약조건, MVCC를 지원하며 행 단위 락을 사용하여 데이터 무결성과 동시정을 보장한다.
(MVCC: 다중버전동시성제어)
MyISAM은 트랜잭션과 외래 키를 지원하지 않고, 테이블 단위 락을 사용하지만, 읽기 작업에 최적화되어 있어 읽기 위주의 작업에 적합하다.
MySQL 옵티마이저는 SQL 쿼리를 가장 효율적으로 실행할 수 있는 계획을 수립하는 역할을 한다.
인덱스 사용여부, 테이블 접근 방법, 조인 순서 등을 결정하여 최소 비용으로 쿼리를 실행할 수 있도록 최적의 실행 계획을 생성한다.
MVCC는 트랜잭션이 데이터를 읽고 쓰는 과정에서 동시성을 유지하기 위해 데이터의 여러 버전을 관리하는 기술이다.
MVCC를 통해 읽기 작업이 쓰기 작업을 차단하지 않아 동시성이 향상되고, 락 경합이 줄어 전체적인 성능이 개선된다.
인덱스는 데이터를 빠르게 찾을 수 있는 구조를 제공하여 Full Table Scan을 방지하고 쿼리 속도를 향상시킨다.
적절한 인덱스 설계는 WHERE 조건, JOIN, ORDER BY, GROUP BY 등의 작업 성은을 개선하지만, 과도한 인덱스는 데이터 변경 작업의 오버헤드를 증가시킬 수 있다.