void master_thread()

{

int innodb_io_capacity = 200 ;//表示磁盘IO吞吐量

int innodb_max_dirty_pages_pct = 75 ;//最大脏页百分比

goto loop;

loop:

//1秒循环

for(int i = o; i<10; i++)

{

thread_sleep(1);//innodb 优化,压力大时不总是等待1秒

//日志缓冲刷新到磁盘

do log buffer flush to disk;

//如果磁盘压力小,合并插入缓冲

if ( last_one_second_ios < innodb_io_capacity*5%  )

{

do merge at most innodb_io_capacity*5% insert buffer;

}

//判断脏页比例

if ( buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct )

{

do buffer pool flush innodb_io_capacity*100% dirty page;

}

//如果开启自适应刷新,通过判断产生重做日志的速度来判断合适的刷新脏页数量

else if enable adaptive flush

{

do buffer pool flush desired amount dirty page;

}

//如果无用户活动,切换到 backgroud loop

if ( no user activity )

{

goto backgroud loop;

}

}

//10秒循环

//如果磁盘压力小,刷新innodb_io_capacity*100%的脏页到磁盘

if ( last_ten_second_ios < innodb_io_capacity )

{

do buffer pool flush innodb_io_capacity*100% dirty page;

}

//合并插入缓冲

do merge at most innodb_io_capacity*5% insert buffer;

//日志缓冲刷新到磁盘

do log buffer flush to disk;

//删除无用undo页,每次最多删除20个undo页

do full purge;

//判断脏页比例

if ( buf_get_modified_ratio_pct >70% )//---------

{

do buffer pool flush innodb_io_capacity*100% dirty page;

}

else

{

do buffer pool flush innodb_io_capacity*10% dirty page;

}

//产生一个模糊检查点,只是将最老日志序列号的页写入磁盘

do fuzzy checkpoint;

goto loop;

//backgroud

backgroud loop:

//删除无用undo页

do full purge;

//合并插入缓冲

do merge innodb_io_capacity*100% insert buffer;

//不空闲跳回主循环,空闲则进入flush loop

if not idle

{

goto loop;

}

else

{

goto flush loop;

}

//flush loop

flush loop:

//不断刷新脏页到磁盘,直到脏页比例小于innodb_max_dirty_pages_pct,则进入suspend loop

do buffer pool flush innodb_io_capacity*100% dirty page;

while ( buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct );

goto suspend loop;

//suspend loop

suspend loop:

suspend_thread();

waiting event;

goto loop;

}

mysql master thread_mysql innodb master_thread伪代码整理相关推荐

  1. mysql master thread_Mysql的InnoDB引擎-3.CheckPoint手艺、Master Thread

    CheckPoint手艺 数据库每次更新数据的时刻都要将脏页刷新会磁盘,同时在事务提交中要先写重做日志,再修改页:在以上过程中发生宕机的,数据若何恢复,脏页刷新到哪里,为了解决这些问题,提出了chec ...

  2. MySQL技术内幕 InnoDB存储引擎——第2章 InnoDB存储引擎(未完待续)

    第2章 InnoDB存储引擎 2.1 InnoDB存储引擎概述 InnoDB存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发). ...

  3. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

  4. Mysql运维常用命令回顾整理

    一.前景 Mysql作为开源数据库的中坚力量之一,虽然目前已被甲骨文收购,面临闭源风险,但是mysql扔是我们运维工作中最常面对的工作,那如何做好mysql运维工作,甚至做好mysql的基础运维,都是 ...

  5. Mysql技术内幕InnoDB存储引擎——InnoDB存储引擎

    特此申明: 前段时间找工作所以看了<Mysql技术内幕InnoDB存储引擎>,整理的时候除了参考网上已有的笔记贴,加上自己整合的,可能和别人有雷同之处.不过无所谓啦,写出来自己看看,需要的 ...

  6. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 ​ 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...

  7. 回收mysql表碎片_MySQL表碎片整理

    MySQL表碎片整理 1. 计算碎片大小 要整理碎片,首先要了解碎片的计算方法. 可以通过show table [from|in db_name] status like '%table_name%' ...

  8. MySQL · 性能优化· InnoDB buffer pool flush策略漫谈

    MySQL · 性能优化· InnoDB buffer pool flush策略漫谈 背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数 ...

  9. mysql dba系统学习(21)mysql存储引擎InnoDB

    mysql存储引擎InnoDB 1,主体系结构: 默认7个后台线程,4个io thread(insert buffer.log.read.write),1个master thread(优先级最高),1 ...

最新文章

  1. python教学网站-python学习网站整理
  2. linux下常用软件下载
  3. java ssl证书生成_java – 使用jdk中提供的keytool生成SSL证书
  4. _ASSERTE(_CrtIsValidHeapPointer(pUserData))错误详解
  5. load out mysql,快速的mysql导入导出数据(load data和outfile)
  6. java 程序更新_如何关闭JAVA更新程序
  7. C++中使用set和unordered_set的find方法时遇到的小坑
  8. 说说代码质量、代码安全和软件测试那些事
  9. 配置Nginx不同域名访问不同项目
  10. 1.数据结构 --- 绪论
  11. matlab 角度转四元数_学习笔记—四元数与欧拉角之间的转换
  12. SD卡与TF卡基础知识
  13. 电脑时间校准方法,怎么校准电脑时间
  14. SQL Sever创库
  15. 瑞芬科技的电子罗盘,stm32程序
  16. 柠檬班性能测试day3_性能测试基础知识(0521)
  17. win10 下 pdfium编译 VS2017
  18. 把一个字符串中的大写字母和小写字母分别存储到一个新的字符串中
  19. Android 修改昵称
  20. 主线程中同步的 XMLHttpRequest 已不推荐使用,因其对终端用户的用户体验存在负面影响。

热门文章

  1. LeetCode-字符串-58. 最后一个单词的长度
  2. 数据的预处理与特征构建(申请评分卡模型)
  3. 使用flink Table Sql api来构建批量和流式应用(3)Flink Sql 使用
  4. 【漫谈数据仓库】 如何优雅地设计数据分层
  5. python vs java的rsa加密
  6. zookeeper源码分析之一服务端启动过程
  7. lucence学习系列之一 基本概念
  8. 【数据分析】Python :视频网站数据清洗整理和结论研究
  9. SQL Server 2005 Sa 用户的启用
  10. rust 面向对象之Struct、impl、trait关键字使用