Choose a default theme

You can change your theme from the menu

MySQL

Earlier revision · 1View current content

MySQL은 SQL을 사용해 테이블의 데이터를 정의하고 조회·변경하는 관계형 데이터베이스 관리 시스템이다. SQL을 처리하는 서버 계층과 실제 데이터를 저장하는 스토리지 엔진을 구별하는 구조가 특징이다. MySQL과 InnoDB는 밀접하게 연결되지만 같은 대상을 가리키는 이름은 아니다.

분야

관계형 데이터베이스 관리 시스템

서버와 스토리지 엔진

응용 프로그램은 연결을 열고 SQL을 서버에 전달한다. 서버는 문장을 해석하고 실행 계획을 세우며, 저장 엔진은 레코드와 인덱스에 접근한다. 따라서 같은 SQL 문법을 사용하더라도 트랜잭션·잠금·저장 방식의 세부 동작은 엔진에 따라 달라질 수 있다.

MySQL 8.4에서는 설정을 변경하지 않은 경우 InnoDB가 기본 저장 엔진이다. 테이블 생성 시 엔진을 생략하면 이 기본값이 적용된다. 다른 제품의 MySQL 호환성을 평가할 때도 SQL 문법뿐 아니라 저장 엔진과 버전의 차이를 확인해야 한다.

트랜잭션과 데이터 모델

관계형 모델에서는 기본 키로 행을 식별하고, 데이터 형식과 제약 조건으로 허용되는 상태를 제한한다. 주문과 주문 항목처럼 연관된 데이터를 다룰 때는 여러 변경을 하나의 트랜잭션으로 묶을 수 있다. 예를 들어 재고 차감과 주문 기록 중 일부만 반영되는 상황을 피하려면 두 변경의 커밋 경계를 함께 설계한다.

트랜잭션을 사용한다는 사실만으로 모든 동시성 문제가 해결되지는 않는다. 격리 수준, 읽기 방식, 인덱스, 잠금 범위에 따라 결과와 대기 시간이 달라진다. 애플리케이션의 재시도 또한 중복 처리를 고려해야 한다.

인덱스와 실행 계획

인덱스는 조회할 후보를 줄이지만 저장 공간과 변경 비용을 추가한다. 단일 열의 선택도만 볼 것이 아니라 실제 WHERE 조건, 조인, 정렬 순서를 함께 검토한다. 실행 계획은 서버가 선택한 접근 경로를 설명하는 자료이며, 운영 부하와 통계 상태가 달라지면 계획도 달라질 수 있다.

관련 제품과의 구분

InnoDB는 MySQL의 저장 엔진이며, RocksDB는 별도의 내장형 키·값 저장 라이브러리이다. MyRocks는 RocksDB를 SQL 서버의 저장 엔진으로 연결하는 구현이다. MyRocks가 모든 MySQL 배포판에 기본 포함된다고 가정해서는 안 된다. MariaDB와 Percona Server도 각각 배포판과 버전별 기능을 확인해야 한다.

함께 읽기

InnoDB · MyRocks · RocksDB

참고 자료