- 어떤 경우에 lock 이 발생하는지, lock 원인을 찾는 방법 테스트
## 테스트 테이블 생성
CREATE TABLE select_lock
(col1 VARCHAR(50),
col2 VARCHAR(50));
INSERT INTO select_lock VALUES('1st', 'first');
INSERT INTO select_lock VALUES('2nd', 'second');
1. Session A ( autocommit = off 상태에서 select 쿼리 수행)
status : lock 발생
SET autocommit =0;
SELECT * FROM select_lock;
2. Session B (lock 상태 조회)
Shared_read lock 발생 확인
SELECT l.object_type, l.object_schema, l.object_name, l.lock_type, l.lock_status,
t.processlist_id, t.processlist_user, t.processlist_host, t.processlist_time, t.processlist_info,
t.processlist_state, t.thread_id
FROM performance_schema.metadata_locks l
INNER JOIN performance_schema.threads t ON t.thread_id = l.owner_thread_id
WHERE processlist_id <> CONNECTION_ID();
3. Session C (테이블 변경)
Shared_read lock 상태에서 해당 테이블 alter 작업 수행하려고 할 때에 wait 상태에 빠짐
status : lock 발생
ALTER TABLE select_lock CHANGE col1 colA VARCHAR(16);
4. Session B (lock 상태 조회)
5. Session A (commit)
- 트랜잭션 반환 후 Session C 에서 테이블 변경이 수행됨을 확인
'Mysql & Maria > admin' 카테고리의 다른 글
root 비밀 번호 분실시 (0) | 2023.11.28 |
---|---|
Mysql lock 종류 (0) | 2023.11.26 |
mysql 성능 I/O 읽기/쓰기 관련 측정 (0) | 2023.11.02 |
full text index (1) | 2023.09.07 |
mysql int(10) / bigint(20) 등 괄호 안 숫자의 의미 (0) | 2023.07.20 |