自旋锁
标签(空格分隔): innodb
简介
Innodb中大量使用自旋锁来避免锁等待时的上下文切换,影响性能的问题。自旋锁分为加锁和解锁两个过程,其中加锁分为尝试加锁与自旋的过程。
数据结构解析
其上层调用方式一般为如下:
mutex_enter(&trx->undo_mutex);
mutex_enter宏定义如下
#define mutex_enter(M) (M)->enter( \
srv_n_spin_wait_rounds, \
srv_spin_wait_delay, \
__FILE__, __LINE__)
所以根据不同的mutex类型,有不同的实现。有点类似与C++中的多态。
而如上示例中的undo_mutex定义如下
UndoMutex undo_mutex; /*!< mutex protecting the fields in this
section (down to undo_no_arr), EXCEPT
last_sql_stat_start, which can be
accessed only when w