728x90
- InnoDB 스토리지 엔진 잠금
- InnoDB 스토리지 엔진은 mysql 에서 제공되는 잠금과는 별개로 스토리지 엔진 내부에서 레코드 깁ㄴ의 잠금 방식을 탑재 함
- 이원화된 잠금 방식 때문에 MyISAM 보다는 훨씬 뛰어난 동시성 처리를 제공할 수 있다.
- 이원화된 잠금
- 데이터베이스 트랜잭션이 복수의 레코드에 적용되는 잠금을 말한다.
- 이로인해 데이터베이스의 일관성을 보장하고, 복수의 사용자가 동시에 동일한 레코드에 접근하려 할 때 충돌을 방지 함.
- 이원화된 잠금
- 하지만 이원화된 잠금 처리 탓에 InnoDb 스토리지 엔진에서 사용되는 잠금에 대한 정보는 mysql 명령을 이용해 접근하기 까다롭다.
- 하지만 최근 버전에서는 InnoDb의 트랜잭션과 잠금, 그리고 잠금 대기 중인 트랜잭션의 목록을 조회할 수 있는 방법이 도입됐다.
- 아래 코드가 안된다면 권한 또는 버전?차이 인거 같다..
select *
from information_schema.innodb_locks;
SELECT *
FROM information_schema.innodb_lock_waits;
SELECT trx.trx_id,
trx.trx_state,
lock_waits.requesting_trx_id,
lock_waits.blocking_trx_id,
locks.lock_table,
locks.lock_index,
locks.lock_mode
FROM information_schema.innodb_trx trx
JOIN information_schema.innodb_locks locks ON trx.trx_id = locks.lock_trx_id
JOIN information_schema.innodb_lock_waits lock_waits ON locks.lock_id = lock_waits.blocking_lock_id;
#==========================================
select * from performance_schema.data_locks;
select r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
b.trx_query blocking_query
from performance_schema.data_lock_waits w
inner join information_schema.INNODB_TRX b
on b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID
inner join information_schema.INNODB_TRX r
on r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID
;
728x90
'공부 > Mysql' 카테고리의 다른 글
[RealMysql 8.0] mysql의 격리수준 5.4 ~ 5.4.4 (0) | 2023.02.05 |
---|---|
[RealMysql 8.0]5 트랜잭션과 잠금 5.3 ~ 5.3.3 (0) | 2023.02.05 |
[RealMysql 8.0]5 트랜잭션과 잠금 네임드락 5.2.3 ~ 5.2.4 (0) | 2023.02.04 |
[RealMysql 8.0]5 트랜잭션과 잠금 5.1 ~ 5.2.2 테이블 락 (0) | 2023.02.04 |
mysql 잠금: 명시적 잠금, 묵시적 잠금 (0) | 2023.02.04 |
댓글