Mysql & Maria/admin

mysql lock 발생 테스트

dbavayne 2023. 11. 26. 17:23

- 어떤 경우에 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