pbj0812의 코딩 일기

[SQL] MySQL lock 실습 본문

ComputerLanguage_Program/SQL

[SQL] MySQL lock 실습

pbj0812 2020. 9. 16. 01:01

0. 목표

 - MySQL 내 lock 실습

1. 실습

 1) 테이블 생성

  - InnoDB로 생성

CREATE TABLE pbj_db.lock_test 
(
	ID INT PRIMARY KEY,
    Name VARCHAR(30)
) engine=InnoDB;

 2) 데이터 삽입

INSERT INTO pbj_db.lock_test(ID, Name) VALUES(1, 'a');
INSERT INTO pbj_db.lock_test(ID, Name) VALUES(2, 'b');
INSERT INTO pbj_db.lock_test(ID, Name) VALUES(3, 'c');

 3) 트랜잭션 실행

START TRANSACTION;

 4) lock 걸어주기

  - ID 가 1인 행을 잠그기

SELECT * FROM pbj_db.lock_test WHERE ID = 1 LOCK IN SHARE MODE;

 5) 새로운 세션 열기

 6) ID가 1인 행 삭제 시도

  - run 표시만 돌고 삭제가 되지 않음

DELETE FROM pbj_db.lock_test WHERE ID = 1;

 7) ID가 2인 행 삭제 시도

  - 성공

DELETE FROM pbj_db.lock_test WHERE ID = 2;

 8) 데이터 확인

SELECT * FROM pbj_db.lock_test;

2. 참고

 - [MySQL] Table Lock(테이블 락) 확인 및 해제 하기
 - MySQL에서 사용하는 Lock 이해

Comments