맛집 여행 캠핑 일상 생활

MySQL 테이블락 설정 및 해제 본문

LAMP

MySQL 테이블락 설정 및 해제

영은파더♥ 2016. 1. 28. 17:54
728x90

MySQL 테이블락 예제


● 테이블락 설정

1. READ 락

락을 실행한 세션과 모든 세션에서 insert, update, delete가 불가능하고 select만 가능

LOCK TABLES 테이블명 READ;

2. WRITE 락

락을 실행한 세션에서만 insert, update, delete가 가능

단, insert 한 행은 락이 해제되기 전에는 select가 되지 않으니 유의하기 바람.

LOCK TABLES 테이블명 WRITE;

※ 테이블락을 설정한 상태에서 설정 테이블 이 외의 테이블은 select 가 안되니 select가 필요한 테이블은 함께 락을 걸어줘야 된다.


● 테이블락 해제

락을 해제한 후에는 다른 세션에서 접근이 가능하다.

UNLOCK TABLES;



● 테이블락 대기 시간 확인

show variables like 'table_lock_wait_timeout';

결과

 Variable_name

 Value

 table_lock_wait_timeout

 50

테이블락을 걸고 해제하기 까지 수행되는 시간이 길어진다면 그 사이 수많은 커넥션이 발생할 것으로 예상되어 진다.

완전 무결한 데이터 관리도 중요하지만 잘못된 테이블락 설정은 다른 유저의 짜증을 유발할지도 모를일이다.


그리고 시간이 오래걸리는 여러건 반복적인 작업인 경우에는 반복문 바깥이 아닌 안쪽에 LOCK TABLES 를 걸었다가 UNLOCK TABLES 를 해주어야 한다.

바깥에 테이블락을 걸게되면 모든 작업이 끝날때 까지 대기가 되어 엄청난 커넥션이 쌓이게 될 것이다.


이는 결국 too many open files 에러를 뿜게 될 수도 있다.


728x90
반응형

'LAMP' 카테고리의 다른 글

지정한 계정만 su 명령어 허용하기  (0) 2016.01.29
MySQL 기본 함수 만들기  (0) 2016.01.28
ssh 암호 입력 없이 rsync 하는 방법  (0) 2016.01.28
아파치 유저 권한 모듈  (0) 2016.01.28
리눅스 트래픽 제어  (0) 2016.01.26
Trackback : | Comments :