innoDB 体系架构 ----后台线程

  innoDB存储引擎是多线程的模型,因此有多个后台线程来完成不同任务

    

   1.Master Thread

      innoDB核心后台线程,负责将缓存池中的数据异步刷新到磁盘,保证数据一致性。

    2.IO Thread

      在innoDB 中大量使用了AIO(Async IO 异步非阻塞IO)来处理IO请求,这可以极大提高数据库性能。

      在innoBD1.0 之前共有四个IO Thread 。分别是 write ,read,insert buffer 和 log IO thread.在innoDB 1.0.x 版本开始,read thread 和 write thread 分别增大到了4个,在Linux环境下,IO Thread 的数量不可变。

     

      mysql> SHOW VARLABLES  LIKE 'innodb_version' ;  //查看innoDB版本

    

      mysql>SHOW VARLABLES   LIKE 'innodb_%io_thread';//查看IO Thread 数量

  

      可以通过SHOW ENGINE INNODB STATUS 来观察innoDB中的IO Thread

     

       mysql>SHOW ENGINE INNODB STATUS; //查看IO Thread 数量

   

   

    3.Purge Thread

     

       事务被提交后,其所使用的undolog可能不太需要,因此 Purge Thread来回收已经使用并已经分配的undo页。在innoDB 1.1版本之前,pruge在Master Thread中完成。而从 innoDB 1.1开始,pruge操作可以独立到单独的线程中进行,以此来减轻Master的工作,从而提高CPU使用率以及提升存储引擎性能。

      在 my.cnf 中添加如下命令来启用Purge Thread :

            [mysql ] 

             innodb_purge_threads= 1

      在innoDB 1.1 中即使  innodb_purge_threads  设置大于1,innoDB存储引擎启动时也会将其设置为1, 并在错误文件中留下记录。

       

      在innoDB 1.2版本开始innoDB支持多个Pruge Thread,这样做的目的是进一步加快undo 页的回收,同时多个Pruge Thread离散的读取undo页,这样也能更进一步的利用磁盘随即读取性能。

  

     4.Page Cleaner Thread

        Page Cleaner Thread 是在innoDB 1.2.X版本中引入的。其作用是将以前版本的脏页的刷新操作都放入独立的线程。这样可以分担Master Thread 的工作压力,降低用户请求的阻塞时间,同时进一步提高innoDB的性能。

    

       

      

          

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值