2012-06-26 109 views
2

我最近在读InnoDB代码,需要在代码上写一些代码。 我知道在S2PL中,在发生冲突的事务结束后,将会恢复被阻止的事务。但是,我不确定InnoDB在块之后如何恢复事务,是否有一个处理这种工作的线程?非常感谢。innodb如何恢复交易?

回答

0

当需要锁但不能授予锁时,该锁被输入到页级别的锁定队列中。当释放任何锁时,释放事务将搜索队列并从队列中授予下一个新的非冲突锁。请参阅MySQL源代码中的storage/innobase/lock/lock0lock.clock_rec_enqueue_waiting,lock_rec_dequeue_from_page,lock_grant等。