InnoDB定义的Mutex--02

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.mutexssnSplit 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 LockInnoDB称为读写锁

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_poolrecalc_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_threadthe recovery thread之间协调刷出动作

队列

work_queue

wq->mutexFIFO SPMC work queuesingle 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_threadsfts_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,保护InnoDBcondition

文件与IO

os_file_seek_mutex

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

os_aio_mutex

array->mutex,保护异步IO的操作,操作有针对Insert BufferREDO LogRead arrayWrite array

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值