데이터베이스를 백업하거나 테이블의 스키마 구조를 변경하거나 기타 중요한 작업을 진행할 때 다른 사람이 해당 테이블에 작업을 하지 못하도록 막기 위해 locking을 한다.
모든 락은 deadlock-free 이다.
- 언제나 질의를 시작할 때 한번에 모든 필요한 락을 요청하고 언제나 같은 순서대로 테이블에 락을 걸어 관리한다.
LOCK 종류에는 READ,WRITE LOCK가 있다.
- READ LOCK을 사용하면 다른 사용자가 해당 테이블을 읽기만 가능하고 쓰기를 할 때에는 LOCK이 걸린다.
실질적으로 SELECT문은 실행할 수 있찌만, INSERT,UPDATE,DELETE를 실행 할 수 없다.
- WRITE을 사용하면 다른 사용자가 해당 테이블에 대해 읽기와 쓰기를 할 때 모두 LOCK이 걸린다. 즉 SELECT 문을 실행할 때 LOCK이 걸린다.
락을 해제할 때는 UNLOCK TABLE를 사용한다.
또 다른 사용자가 LOCK이 걸린 테이블의 내용을 보려고 하면 다음과 같은 select문을 사용한다.
모든 락은 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;
> 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 |
댓글