MySQL体系结构与参数文件及查询优化器详解(5)

(2.2)被动Merge,则主要是指在用户线程执行的过程中,由于种种原因,需要将insert buffer的修改merge到page之中。被动Merge由用户线程完成,因此用户能够感知到merge操作带来的性能影响。 
例如: 
a、 Insert操作,导致页面空间不足,需要分裂。由于insert buffer只能针对单页面,不能buffer page split,因此引起页面的被动Merge; 
b、 insert操作,由于其他各种原因,insert buffer优化返回失败,需要真正读取page时,也需要进行被动Merge; 
c、在进行insert buffer操作时,发现insert buffer已经太大,需要压缩insert buffer。 
5、 check point: 
(1)checkpoint干的事情:将缓冲池中的脏页刷新到磁盘 
(2)checkpoint解决的问题: 
a、缩短数据库的恢复时间(数据库宕机时,不需要重做所有的日志,因checkpoint之前的页都已经刷新回磁盘啦) 
b、缓冲池不够用时,将脏页刷新到磁盘(缓冲池不够用时,根 
据LRU算法算出最近最少使用的页,若此页为脏页,需要强制执行checkpoint将脏也刷回磁盘) 
c、重做日志不可用时,刷新脏页(采用循环使用的,并不是无限增大。当重用时,此时的重做日志还需要使用,就必须强制执行checkpoint将脏页刷回磁盘)

IO thread 
在innodb存储引擎中大量使用AIO来处理IO请求,这样可以极大提高数据库的性能,而IO thread的工作就是负责这些IO请求的回调处理(call back); 
lock monitor thread

error monitor thread

purge thread 
1、 事务被提交后,其所使用的undo log可能将不再需要,因此需要purge thread来回收已经使用并分配的undo页; 
2、从mysql5.5开始,purge操作不再做主线程的一部分,而作为独立线程。 
3、开启这个功能:innodb_purge_threads=1。调整innodb_purge_batch_size来优化purge操作,batch size指一次处理多少undo log pages, 调大这个参数可以加块undo log清理(类似Oracle的undo_retention)。 
从mysql5.6开始,innodb_purge_threads调整范围从0–1到0–32,支持多线程purge,innodb-purgebatch-size会被多线程purge共享

page cleaner thread 
page cleaner thread是在innodb1.2.x中引用的,作用是将之前版本中脏页的刷新操作都放入到单独的线程中来完成,其目的是为了减轻master thread的工作及对于用户查询线程的阻塞,进一步提高innodb存储引擎的性能。

5 MySQL语句执行过程

mysql执行一个查询的过程,执行的步骤包括:

客户端发送一条查询给服务器;

服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。

服务器段进行SQL解析、预处理,在优化器生成对应的执行计划;

mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询。

将结果返回给客户端。 
简单的来说: 
SQL权限的检查 –>SQL语法语意分析 –> 查询缓存 –> 服务器SQL解析 –> 执行

MySQL体系结构与参数文件及查询优化器详解

5.1 查询状态

对于mysql连接,任何时刻都有一个状态,该状态表示了mysql当前正在做什么。 
使用show full processlist命令查看当前状态。在一个查询生命周期中,状态会变化很多次,下面是这些状态的解释: 

sleep:线程正在等待客户端发送新的请求;
query:线程正在执行查询或者正在将结果发送给客户端; 
locked:在mysql服务器层,该线程正在等待表锁。 
analyzing and statistics:线程正在收集存储引擎的统计信息,并生成查询的执行计划; 
copying to tmp table:线程在执行查询,并且将其结果集复制到一个临时表中,这种状态一般要么是做group by操作,要么是文件排序操作,或者union操作。如果这个状态后面还有on disk标记,那表示mysql正在将一个内存临时表放到磁盘上。 
sorting Result:线程正在对结果集进行排序。 
sending data:线程可能在多个状态间传送数据,或者在生成结果集,或者在想客户端返回数据。

5.2 查询缓存

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b0c2f98b28341b5ab270e2668fc9c4d8.html