MySQL 스토리지 엔진 비교: InnoDB vs MyISAM

유경록·2025년 3월 26일

데이터베이스

목록 보기
2/5
post-thumbnail

MySQL에서 데이터를 어떻게 저장하고 관리할지 결정하는 스토리지 엔진(Storage Engine).
그중 가장 많이 비교되는 두 가지: InnoDBMyISAM.

항목InnoDBMyISAM
트랜잭션지원 (ACID 보장)미지원
Lock 방식Row-level Locking (행 단위)Table-level Locking (테이블 단위)
외래 키(FK)지원미지원
성능 특징동시성 처리 최적화
쓰기/변경에 강함
읽기 성능 우수
간단한 쿼리 빠름
충돌 복구자동 복구 기능 우수충돌 복구 기능 미흡
저장 공간 효율성비교적 낮음비교적 높음
주요 특징데이터 무결성 보장
복잡한 애플리케이션 적합
읽기 중심 시스템에 적합
간단한 구조

🔸 InnoDB는 대부분의 최신 MySQL에서 기본 스토리지 엔진이다.


SQL 실행 순서 정리

예시 SQL:

SELECT
 name, age, sex, COUNT(*) AS cnt
FROM users
JOIN user_profiles
  ON users.id = user_profiles.user_id
WHERE age >= 20
GROUP BY age, sex
HAVING COUNT(*) > 0
ORDER BY age DESC
LIMIT 5

SQL 실행 순서
1. FROM users

2.JOIN user_profiles ON users.id = user_profiles.user_id

3.WHERE age >= 20

4.GROUP BY age, sex

5.HAVING COUNT(*) > 0

6.SELECT name, age, sex, COUNT(*) AS cnt

7.ORDER BY age DESC

8.LIMIT 5

🔸SELECT가 가장 먼저 보이지만 가장 나중에 실행된다!


예시: 소셜 로그인 토큰 저장
보통 카카오나 구글 등의 소셜 로그인 시 토큰 정보는
user_profiles 같은 테이블에 따로 저장.

예시 구조
users 테이블 → 유저의 기본 정보 (id, name, email 등)

user_profiles 테이블 → 소셜 로그인 정보 (user_id, provider, access_token 등)

이렇게 분리하는 이유
유저 정보와 외부 서비스 데이터를 분리하여 관리

다양한 소셜 로그인(카카오, 구글, 네이버 등)을 하나의 구조로 확장 가능


마무리 요약

  • InnoDB: 동시성/무결성이 중요한 시스템에 적합 (CRUD, SNS 등)

  • MyISAM: 빠른 읽기 작업이 필요한 단순 검색 시스템에 유리

  • SQL 실행 순서를 이해하면 더 효율적인 쿼리 작성 가능

  • 소셜 로그인은 별도 프로필 테이블로 관리하는 것이 일반적

profile
작은 문제도 끝까지 파고들며, 꾸준히 성장하는 백엔드 개발자를 지향합니다.

0개의 댓글