InnoDB定义的Mutex--02

InnoDB定义的Mutex--02

2017-01-15 12:04:02 |  分类: 数据库 |  标签: | 举报 | 字号   订阅

     

用微信  “扫一扫”

将文章分享到朋友圈。

 

用易信  “扫一扫”

将文章分享到朋友圈。

 
  下载LOFTER 我的照片书  |

InnoDB 定义的 Mutex 的作用

    在许多对象(如数据缓冲区、字典表、系统锁表、双写缓冲区等)上、在许多操作作用的对象(如事务、回滚段等)上, InnoDB 都定义了很多系统锁,用以保护某个对象。这些系统锁,就是上一节讨论的 Mutex 。定义好的 Mutex 的具体作用,详情参见表 11-5

11-5 InnoDB 的系统级锁

类别

锁的名称

锁及作用

数据缓冲区

buf_pool

buf_pool->mutex ,保护 InnoDB 实例的 buffer pool

buf_pool_zip

buf_pool->zip_mutex ,保护 InnoDB 实例的 buffer pool 中的压缩页

buf_block_mutex

block->mutex ,保护 buffer 控制块

flush_list

buf_pool->flush_list_mutex ,保护 InnoDB 实例的 buffer pool 中刷出 list

页面清理

page_cleaner

page_cleaner->mutex ,保护清理页面相关的对象 page_cleaner_t page_cleaner_slot_t

双写缓冲区

buf_dblwr

buf_dblwr->mutex ,保护双写缓冲区

数据字典

dict_sys

dict_sys->mutex ,保护数据字典表,并使得 CREATE TABLE DROP TABLE 互斥

dict_foreign_err

dict_foreign_err_mutex ,保护外键、唯一键错误信息所写的临时文件不被同时操作

GIS 使用的 R-tree

rtr_active_mutex

index->rtr_track->rtr_active_mutex ,保护处于 ACTIVE 状态的“ rtr_info ”列表

rtr_ssn_mutex

index->rtr_ssn.mutex ssn Split Sequence Number 之意,是 R-tree 索引上因页分裂时而赋予新页的序列号,保护并发下多页分裂时 ssn 值的原子性

rtr_match_mutex

rtr_info->matches->rtr_match_mutex ,保护页节点上匹配的记录

rtr_path_mutex

rtr_info->rtr_path_mutex ,保护 R-tree 上的“路径”,路径是从根经过内部若干节点到达叶子的一条路

insert buffer

ibuf

ibuf_mutex ,保护插入缓存

ibuf_bitmap

ibuf_bitmap_mutex ,保护插入缓存的 bitmaps

ibuf_pessimistic_insert

ibuf_pessimistic_insert_mutex ,悲观地保护插入缓存的插入操作,悲观的含义是严格限制并发操作即禁止并发的范围较大

事务相关

trx_sys

trx_sys->mutex ,保护全局事务的信息

trx

trx->mutex ,保护单个事务的信息

trx_undo

trx->undo_mutex ,保护单个事务的 UNDO 信息

trx_pool

TrxPoolLock.m_mutex ,保护事务池

trx_pool_manager

TrxPoolManagerLock.m_mutex ,保护事务池管理器

事务锁

lock_sys

lock_sys->mutex ,保护事务锁的锁表

lock_sys_wait

lock_sys->wait_mutex ,保护事务锁的锁表内部的部分成员

Spin Lock InnoDB 称为读写锁

rw_lock_list

rw_lock_list_mutex ,保护读写锁对象列表即 rw_lock_list ,这个对象的锁是通过 rw_lock_create 宏所表示的 rw_lock_create_func() 传入的

.rw_lock_debug

rw_lock_debug_mutex

rw_lock_mutex

rw_lock_get_mutex(lock) ,保护读写锁自身

数据统计

recalc_pool

recalc_pool_mutex ,保护 recalc_pool recalc_pool 是存储后台进程需要做数据统计的表的 id 集合

REDO log buffer

log_sys

log_sys->mutex ,保护 REDO 日志的 buffer

log_flush_order

log_sys->log_flush_order_mutex ,保护 REDO 日志 buffer 的刷出 List 有序刷出

回滚段

noredo_rseg/redo_rseg

rseg->mutex ,保护一个回滚段

记录索引修改的 buf

index_online_log

log->mutex ,保护修改索引的 buf

row_drop_list

row_drop_list_mutex ,保护 DROP TABLE 的列表

INFORMATION SCHEMA 的内部结构

cache_last_read

cache->last_read_mutex

系统恢复

recv_sys

recv_sys->mutex ,保护恢复系统做 Apply 操作的 recv_sys_t 的内存结构

recv_writer

recv_sys->writer_mutex ,在 recv_writer_thread the recovery thread 之间协调刷出动作

队列

work_queue

wq->mutex FIFO SPMC work queue single producer, multiple consumers

反转索引,即 FTS

fts_delete

cache->deleted_lock

fts_optimize

cache->optimize_lock

fts_doc_id

cache->doc_id_lock

fts_bg_threads

bg_threads_mutex ,保护 bg_threads fts_add_wq

fts_pll_tokenize

psort_info[j].mutex ,并行排序

表空间

fil_system

fil_system->mutex ,保护表空间的 cache

PURGE 操作

purge_sys_pq

purge_sys->pq_mutex ,保护 PURGE 操作的控制块

自增对象

autoinc

table->autoinc_mutex ,保护表对象上的自增列

文件格式

file_format_max

file_format_max.mutex ,文件格式内存对象的保护

压缩页上的统计信息

page_zip_stat_per_index

page_zip_stat_per_index_mutex ,保护

页压缩

zip_pad_mutex

index->zip_pad.mutex ,保护 zip_pad_info_t 结构体, zip_pad_info_t 是在未被压缩的页面上面留有多少空间给压缩使用

系统监控

srv_innodb_monitor

srv_innodb_monitor_mutex ,保护系统监控信息,如异步 IO 信息、日志刷出状态信息等

DB Server

srv_sys

srv_sys->mutex ,保护 srv_sys_t 结构体, srv_sys_t 存放后台线程的相关信息,表明线程的是否 ACTIVE 的状态等

srv_sys_tasks

srv_sys->tasks_mutex ,保护 srv_sys_t 结构体的任务队列

srv_monitor_file

srv_monitor_file_mutex ,保护临时的监控文件

srv_dict_tmpfile

srv_dict_tmpfile_mutex ,保护临时的数据字典输出文件

srv_misc_tmpfile

srv_misc_tmpfile_mutex ,保护临时的混合诊断输出文件

OS

thread_mutex

thread_mutex ,保护线程对象(主要是 os_thread_count ,活动状态的线程计数器)

事件

event_mutex

os_event .mutex ,保护 InnoDB condition

文件与 IO

os_file_seek_mutex

os_file_seek_mutexes[i] ,保护对 OS 一层的文件的 seek 操作

os_aio_mutex

array->mutex ,保护异步 IO 的操作,操作有针对 Insert Buffer REDO Log Read array Write array

  评论这张

阅读( 2 ) | 评论( 0 )

     

用微信  “扫一扫”

将文章分享到朋友圈。

 

用易信  “扫一扫”

将文章分享到朋友圈。

 

喜欢 推荐 转载

历史上的今天

在LOFTER的更多文章

评论

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章