본문 바로가기
DB/MySQL

락(LOCK)

by 가므자 2012. 3. 21.
데이터베이스를 백업하거나 테이블의 스키마 구조를 변경하거나 기타 중요한 작업을 진행할 때 다른 사람이 해당 테이블에 작업을 하지 못하도록 막기 위해 locking을 한다. 

모든 락은 deadlock-free 이다.
- 언제나 질의를 시작할 때 한번에 모든 필요한 락을 요청하고 언제나 같은 순서대로 테이블에 락을 걸어 관리한다.

LOCK 종류에는 READ,WRITE LOCK가 있다.
- READ LOCK을 사용하면 다른 사용자가 해당 테이블을 읽기만 가능하고 쓰기를 할 때에는 LOCK이 걸린다.
실질적으로  SELECT문은 실행할 수 있찌만, INSERT,UPDATE,DELETE를 실행 할 수 없다.
- WRITE을 사용하면 다른 사용자가 해당 테이블에 대해 읽기와 쓰기를 할 때 모두 LOCK이 걸린다. 즉 SELECT 문을 실행할 때 LOCK이 걸린다.

LOCK TABLES <테이블명> [ READ | WRITE]

락을 해제할 때는 UNLOCK TABLE를 사용한다.
UNLOCK TABLES <테이블명>

또 다른 사용자가 LOCK이 걸린 테이블의 내용을 보려고 하면 다음과 같은 select문을 사용한다.
mysql> select stu_name
> from student
> where slass =2;

'DB > MySQL' 카테고리의 다른 글

데이터베이스 설계 지침  (0) 2012.03.26
SQL 명령문의 최적화  (0) 2012.03.21
innodb 설정  (0) 2012.03.21
트랜잭션(Transaction)  (0) 2012.03.21
뷰(View)  (0) 2012.03.20

댓글