后台进程小结

后台进程默认有15个。

1.master thread(1个)。

2.IO thread

(1)read/write thread(8个,默认各4个)

(2)insert buffer thread(1个)

(3)log io thread(1个)

3.lock monitor thread(1个)

4.error monitor thread(1个)

5.purge thread(1个)

6.purge cleaner(flushing) thread(1个)

7.MySQL 5.6起,master thread的工作已被大大减轻,purge,page clean等成独立线程了。

后台进程

1.master thread(主线程)的线程优先级别最高。

2.其内部几个循环(loop)组成:主循环(loop),后台循环(background loop),刷新循环(flush loop),暂停循环(suspend loop)。

3.会根据数据运行的状态在loop,backgroup loop,flush loop和suspend loop中进行切换。

4.loop称为住循环,因为大多数的操作都在这个循环中。

5.loop循环通过thread sleep来实现,这意味着所谓的每秒一次或每10秒一次的操作时不精确的。

6.在负载很大的情况下可能会有延迟。

master thread

1.每秒要做的事

(1)刷新dirty page到磁盘。

(2)执行insert buffer merge。

(3)刷redo log buffer到磁盘。

(4)checkpoint。

(5)检查dict table cache,判断有无要删除table cache对象。

2.每10秒要做的事

(1)刷新dirty page到磁盘。

(2)执行insert buffer merge。

(3)刷redo log buffer到磁盘

(4)undo purge。

(5)checkpoint。

3.实例关闭时

(1)刷redo log到磁盘。

(2)insert buffer merge。

(3)刷redo log buffer到磁盘。

(4)执行checkpoint。

master thread 优化建议

1.避免dirty page堆积,适当调整 innodb_max_dirty_pages_pct(<=50)。

2.避免undo堆积,调整innodb_max_pruge_lag/innodb_max_purge_lap_delay/innodb_purge_batch_size。

3.及时调整checkpoint,调整innodb_flush_flush_log_at_trx_commit/innodb_adaptive_flushing/innodb_adaptive_flushing_lwm/innodb_flush_neighbors/innodb_flusing_avg_loops。

4.保持事务持续平稳提交,不要瞬间大事务,或者高频率小事务。

checkpoint

1.定期确认redo log落盘,避免数据丢失,并提高crash recover效率。

2.buffer pool脏数据太多,把脏页刷到磁盘,释放内存。

3.redo log快用完了,把脏页刷到磁盘。

4.redo log切换时,需要执行checkpoint。

5.sharp checkpoint

(1)将所有的脏页都刷新回磁盘。

(2)刷新时系统hang住。

(3)比较暴力,只有在需要干净重启时才需要innodb_fash_shutdown=0

6.fuzzy checkpoint

(1)持续将脏页刷新回磁盘。

(2)对系统影响较小,但可能刷新较慢,会有迟滞。

(3)innodb_max_dirty_pages_pct = 75

(4)innodb_max_dirty_pages_pct_lwm =0

purge

1.简单说,就是做GC(garbage collection).

2.purge都做啥?

(1)删除辅助索引中不存在的记录。

(2)删除已被打了delete-marked标记的记录。

(3)删除不再需要的undo log。

3.从5.6开始,将purge thread独立出来

(1)innodb_purge_threads=1

(2)innodb_max_purge_lag=0

(3)innodb_purge_batch_size-300

4.案例:删除大量旧数据后,统计min(pkid)很慢。

insert buffer/change buffer

1.将非唯一辅助索引上的IUD操作从随机变成顺序I/O,提高I/O效率。

2.工作机制:

(1)先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入。

(2)若不在,则先放入到一个change buffer对象中。(change buffer也是课B+树。每次最多缓存2K的记录)

(3)当读取辅助索引到缓冲池,将insert buffer中该页的记录合并到辅助索引页。

3.innodb_change_buffer_max_size

4.innodb_change_buffering

(1)fast shutdown不进行insert buffer合并。

(2)insert buffer进行合并时插入时,tps会受到影响。

(3)insert buffer占用一部分buffer pool,如果辅助索引不多,可以考虑关闭或调低insert buffer。

double write,双写

1.目的/作用:保证数据写入的可靠性(防止数据页损坏,又无从修复)

2.因为InnoDB有partial write问题。

(1)16k的页只写入了部分数据时发生crash。

(2)redo里记录的是逻辑操作,不是物理块,无法通过redo log恢复。

3.怎么解决partial write问题

(1)双写,double write。

(2)2个1M的空间,共2M(既有磁盘文件,也有内存空间)。

(3)页在刷新时首先顺序地写入到doublewrite buffer。

(4)然后再刷新回磁盘。

4.在可以保证原子写的硬件设备或文件系统下,可以被关闭。

5.slave上也可关闭。

6.double write写入时顺序的,性能损失很小(SSD设备上损失则比较大)。

7.MySQL 5.7起,采用PCIE SSD设备时会自动判断,是否要关闭double write buffer。

时间: 2024-11-03 20:49:06

后台进程小结的相关文章

Linux后台进程管理的一些命令小结

Linux后台进程管理的一些命令:fg.bg.jobs.&.ctrl + z命令,供大家学习参考 一. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &, 二.ctrl + z可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行 三.jobs查看当前有多少在后台运行的命令jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell

Linux后台进程管理的命令小结

Linux后台进程管理的一些命令:fg.bg.jobs.&.ctrl + z命令等,下面为大家一一介绍,具体也可参考Linux视频教程. 一. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &, 二.ctrl + z可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行 三.jobs查看当前有多少在后台运行的命令jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(k

45个非常有用的 Oracle 查询语句小结

 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧. 原文地址:http://www.jbxue.com/db/19890.html 日期/时间 相关查询 1.获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. 复制代码代码如下: SELECT TRUNC

Linux 有关管理进程的命令小结

1.kill NAME kill - terminate a process (终止进程) SYNOPSIS kill [-signal] pid 说明: kill 给指定进程发送指定信号. 如果没有指定信号, 则发送 TERM 信号. TERM 信号会杀死不能俘获该信号的进程. 对于其他进程, 可能需要使用 KILL (9) 信号, 因为该信号不能够被俘获. 有效信号列表: 信号 值 动作 说明 SIGHUP 1 A 在控制终端上是挂起信号, 或者控制进程结束 SIGINT 2 A 从键盘输入

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

【转载】小结一下linux 2.6内核的四种IO调度算法

在LINUX 2.6中,有四种关于IO的调度算法,下面综合小结一下: 1) NOOP NOOP算法的全写为No Operation.该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作.之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求.NOOP假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样).在有些SAN环境下,这个选择可能是最好选择.Noop 对于 IO

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

安卓小结《1》

Activity的生命周期和启动模式的知识点小结: 1.如果Activity切换的时候,新Activity是透明,旧的不会走onStop方法. 2.新的Activity切换的时候,旧Activity  会先执行,onpause,然后才会启动新的activity. 3. Activity在异常情况下被回收时,onSaveInstanceState方法会被回调,回调时机是在onStop之前,当Activity被重新创建的时 候,onRestoreInstanceState方法会被回调,时序在onSt