- 12장 - 트랜잭션2024년 09월 23일
- 31514
- 작성자
- 2024.09.23.:07
잠금은 데이터베이스 서버가 데이터 자원의 동시 사용을 제어하는 데 사용되는 메커니즘이다.
대부분의 데이터베이스 서버는 다음 두 가지 방법의 잠금 방식을 사용한다.
- 데이터를 수정할 때 쓰기 잠금을 서버에 요청하고 수신하며, 쓰기 잠금이 해제될 때까지는 읽기 요청이 차단된다.
- 다중 버전 동시성 제어(MVCC) : 스냅샷을 활용하여 어떤 읽기/쓰기 요청을 차단하지 않고 일관된 데이터 버전을 사용한다
트랜잭션은 여러 SQL 문을 함께 그룹화해서 모든 구문이 성공하거나 성공하지 않도록 하는 장치다.
SET AUTOCOMMIT=0
MySQL에서 자동 커밋 모드를 해제할 수 있다.
commit 또는 rollback 명령어를 실행했을 때뿐만 아니라 다른 작업으로 인해 트랜잭션이 종료될 수 있다.
- 서버가 종료되고 서버가 재시작되면 자동으로 롤백된다.
- alter table과 같은 SQL 스키마 문을 실행하면 현재 트랜잭션이 커밋되고 새로운 트랜잭션이 시작된다.
- 다른 트랜잭션을 시작하면 이전 트랜잭션이 커밋된다.
- 서버가 교착 상태를 감지했을 때 해당 트랜잭션이 원인이라고 판단하면 롤백하고 오류 메시지를 표기한다.
세이브포인트를 설정하면 트랜잭션 내의 특정 위치로 롤백할 수 있다.
모든 세이브포인트는 이름이 지정되므로 단일 트랜잭션 내에서 여러 세이브포인트를 가질 수 있다.
MySQL 서버는 리소스 잠금과 트랜잭션 관리를 포함한 낮은 수준의 데이터베이스 기능을 제공하기 위해 여러 스토리지 엔진을 활용할 수 있도록 설계되었다.
그리고 테이블별로 스토리지 엔진을 선택할 수 있지만 트랜잭션을 사용하는 경우 InnoDB 엔진을 선택해야 한다.- MyISAM - 테이블 잠금을 사용하는 NonTransaction 엔진
- MEMORY - 인메모리 테이블에 사용되는 NonTransaction 엔진
- CSV - 데이터를 쉼표로 구분해서 파일에 저장하는 트랜잭션 엔진
- InnoDB - 행 수준 잠금을 사용하는 트랜잭션 엔진
- Merge - 여러 개의 MyISAM 테이블을 단일 테이블로 표시하는 특수 엔진
- Archive - 주로 보관 목적으로 대량의 인덱싱되지 않은 데이터를 저장하는 특수 엔진
'Book > Learning SQL' 카테고리의 다른 글
14장 - 뷰 (0) 2024.09.25 13장 - 인덱스와 제약조건 (0) 2024.09.24 9장 - 서브쿼리 (2) 2024.09.20 8장 - 그룹화와 집계 (0) 2024.09.19 6장 - 집합 연산자 (0) 2024.09.12 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)