일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- OpenWrt
- 알리익스프레스
- 램가스초월
- centos
- 티스토리
- 자바스크립트
- 소비전력
- 보르비스초월
- 리눅스
- 라즈베리파이2
- SKT
- mysql
- KB증권
- 시놀로지
- 가상서버호스팅
- ConoHa
- 복현오거리
- 알뜰폰
- Apache
- jQuery
- 킹북이초월
- 아파치
- 스톤에이지
- iptime
- 윈도우10
- PHP-FPM
- Rocky
- proxmox
- php
- KB국민카드
- Today
- Total
맛집 여행 캠핑 일상 생활
MySQL 테이블락 설정 및 해제 본문
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 에러를 뿜게 될 수도 있다.
'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 |