Innodb的启动
2024-08-25 21:58:33
Innodb的启动与关闭
1. 启动函数的流程
innobase_start_or_create_for_mysql
启动的主要步骤包括:
1. 初始化innodb的参数
2. 初始化系统结构
主要结构:srv_sys_t
3. 加载或者创建文件
如果是第一次启动,Innodb会创建系统表空间和log file
如果是重启,Innodb会加载文件
4. 恢复
如果系统非正常关闭,则进入恢复过程
5. 创建相关后台线程
2. 线程并发控制
我们先来看srv_sys的结构:
/** The server system struct */
struct srv_sys_t{
ib_mutex_t tasks_mutex; /*!< variable protecting the
tasks queue */
UT_LIST_BASE_NODE_T(que_thr_t)
tasks; /*!< task queue */
ib_mutex_t mutex; /*!< variable protecting the
fields below. */
ulint n_sys_threads; /*!< size of the sys_threads
array */
srv_slot_t* sys_threads; /*!< server thread table */
ulint n_threads_active[SRV_MASTER + ];
/*!< number of threads active
in a thread class */
srv_stats_t::ulint_ctr_1_t
activity_count; /*!< For tracking server
activity */
};
其中:所有的用户线程进入tasks队列, 所有的Innodb的后台线程在sys_threads数组中保存。
有了这个全局结构,就可以很好的控制Innodb的并发线程。
线程控制函数:
1. :srv_conc_enter_innodb
所有使用Innodb资源的用户线程,调用这个函数,进行并发控制。
2. :srv_conc_force_exit_innodb:
所有用户线程使用完资源后,退出并发线程(比如一个sql结束后)
3. 防止过度占用资源,为每一个事务设置了一个tickets,如果这个事务有过多的sql,就会递减ticket。
当tickets减少为0的时候,会sleep本线程,让出系统资源。
3. shutdown Innodb
innobase_shutdown_for_mysql:
1. 刷新buffer pool,并写入最新的lsn到表空间的header。
2. 关闭所有的后台线程。
3. 释放所有的内存结构和空间。
4. 后台线程
......未完待续。
最新文章
- IDA插件栈字符串识别插件
- 重学JAVA基础(六):多线程的同步
- MSBI BigData demo—sqoop import
- python使用装饰器捕获异常
- nbtstat -a <;IP>; 会显示主机名、所在工作组等信息
- android ListView 中getview学习总结
- 硝烟中的scrum学习笔记 - 怎样制定Sprint计划(Plan Meeting)
- Win32 的dll导入
- ubuntu远程windows服务器
- 一把刀终极配置Win7/8版 v2.0 绿色版
- IOS SDWebImage实现基本原理详解(转载)
- ZOJ2150 Raising Modulo Numbers 快速幂
- Eclipse的优化
- jeecg开发环境搭建
- 面试题(一GC)
- Spring Boot(一):环境搭建,建立简单项目
- flask表单
- Asp.net core 学习笔记 ( Identity 之 Authentication )
- 1. EM算法-数学基础
- HTML5背景音乐的暂停与播放
热门文章
- JavaScript的常见事件和Ajax小结
- ORA-27102: out of memory并伴随OSD-00031的处理
- mybatis显示sql语句 log4j.properties配置文件
- 第一个js面向对象的小实验
- 让<;未将对象引用到实例>;见鬼去吧!
- 自己利用jQuery实现的win8图标浮动更新
- 3.5 spring-replaced-method 子元素的使用与解析
- Windows下的Memcache安装与测试教程
- 【leetcode】Divide Two Integers (middle)☆
- php的redis 操作类,适用于单台或多台、多组redis服务器操作