2
최근에 InnoDB 코드를 읽고 그것에 코드를 작성해야합니다. S2PL에서 충돌 트랜잭션이 완료된 후 차단 된 트랜잭션이 재개됩니다. 그러나, InnoDB가 블록 이후에 트랜잭션을 재개하는 방법을 확신하지 못한다면, 이런 종류의 작업을 처리하는 스레드가 있습니까? 고마워.innodb는 어떻게 트랜잭션을 재개합니까?
최근에 InnoDB 코드를 읽고 그것에 코드를 작성해야합니다. S2PL에서 충돌 트랜잭션이 완료된 후 차단 된 트랜잭션이 재개됩니다. 그러나, InnoDB가 블록 이후에 트랜잭션을 재개하는 방법을 확신하지 못한다면, 이런 종류의 작업을 처리하는 스레드가 있습니까? 고마워.innodb는 어떻게 트랜잭션을 재개합니까?
잠금이 필요하지만 부여 할 수없는 경우 잠금은 페이지 수준의 잠금 대기열에 입력됩니다. 임의의 잠금이 해제되면, 해제 트랜잭션은 큐를 검색하고 다음으로 새로 충돌하지 않는 잠금을 큐에서 승인합니다. MySQL 소스 코드의 storage/innobase/lock/lock0lock.c
에서 lock_rec_enqueue_waiting
, lock_rec_dequeue_from_page
, lock_grant
등을 참조하십시오.