InnoDB存储引擎之MasterThread
InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成的。 1.InnoDB 1.0.x版本之前的Master Thread Master Thread具有最高的线程优先级别。其内部由多个循环组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(s
InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成的。1.InnoDB 1.0.x版本之前的Master Thread
Master Thread具有最高的线程优先级别。其内部由多个循环组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(suspend loop)。Master Thread会根据数据库运行的状态在上述4状态下进行切换。Loop被称为主循环,因为大多数的操作是在这个循环中,其中有两大部分的操作:每秒的操作和每10秒的操作。伪代码如下:
每秒一次的操作:
a.日志缓冲刷新到磁盘,即使这个事务还没有提交(总是);
即使某个是我还没有提交,InnoDB存储引擎仍然每秒会将重做日志缓冲中的内容刷新到重做日志文件。这就可以解释为什么再大的事务提交的时间也很短。
b.合并插入缓冲(可能);
合并插入缓冲(Insert Buffer)并不是每秒都会发生。InnoDB存储引擎会判断当前一秒内发生的IO次数是否小于5次,如果小于5次,InnoDB认为当前的IO压力很小,可以执行合并插入缓冲的操作。
c.至多刷新100个InnoDB的缓冲池中的脏页到磁盘(可能);
InnoDB存储引擎通过判断当前缓冲池中脏页的比例(buf_get_modified_ratio_pct)是否超过了配置文件中innodb_max_dirty_pages_pct这个参数的值,如果超过了这个阀值,InnoDB存储引擎认为需要做磁盘同步操作,将100个脏页写入磁盘。
d.如果当前没有用户活动,则切换到background loop(可能);
每10秒的操作:
a.刷新100个脏页到磁盘(可能);
b.合并至多5个插入缓冲(总是);
c.将日志缓冲刷新到磁盘(总是);
d.删除无用的Undo页(总是);
e.刷新100个或者10个脏页到磁盘(总是);
在以上的过程中,InnoDB存储引擎会先判断过去10秒内磁盘的IO操作是否小于200次,如果是,InnoDB存储引擎认为当前有足够的磁盘IO操作能力,因此将100个脏页刷新到磁盘。接着,InnoDB存储引擎会合并插入缓冲,不同于每秒一次操作时可能发生的合并插入缓冲操作,这次的合并插入缓冲总是会进行。之后InnoDB存储引擎会在进行一次将日志刷新到磁盘。这和每秒一次时发生的操作是一样的。在接下来InnoDB存储引擎会执行full purge操作,即删除无用的Undo页。在full purge过程中,InnoDB存储引擎会判断当前事务系统中已被删除的行是否可以删除,如果可以,则InnoDB会立即将其删除。每次最多尝试回收20个undo页。然后,InnoDB存储引擎会判定缓冲池中脏页的比列如果有超过70%的脏页,则刷新100个脏页到磁盘。如果比例小于70%则只需要刷新10%的脏页到磁盘。
若当前没有用户活动(上巨款空闲时)或者数据库关闭(shutdown),就会切换到这个循环。background loZ喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcLvhu+HWtNDQ0tTPwrLZ1/c6PGJyPgogICAgICAgICAgICBhLsm+s/3O3tPDtcRVbmRv0rMo19zKxyk7PGJyPgogICAgICAgICAgICBiLrrPsqIyMLj2suXI67u6s+Uo19zKxyk7PGJyPgogICAgICAgICAgICBjLsz4u9i1vdb30a27tyjX3MrHKTs8YnI+CiAgICAgICAgICAgIGQusru2z8ui0MIxMDC49tKz1rG1vbf7us/M9bz+KL/JxNwszPjXqrW9Zmx1c2ggbG9vcNbQzeqzySk7PGJyPgogICAgICAgIMj0Zmx1c2ggbG9vcNbQw7vKssO0ysLH6b/J0tTX9qOsSW5ub0RCtOa0otL9x+a74cfQu7u1vXN1c3BlbmQgbG9vcKOsvatNYXN0ZXIgVGhyZWFkudLG8KOstci0/cqxvOS1xLeiyfqho8j008O7p8b008MoZW5hYmxlKcHLSW5ub0RCtOa0otL9x+ajrMi0w7vT0Mq508PIzrrOSW5ub0RCtOa0otL9x+a1xLHto6zEx8O0TWFzdGVyIFRocmVhZNfcyse0ptPaudLG8LXE17TMrKGjPGJyPgogICAgMi5Jbm5vREIgMS4yLniw5rG+1q7HsLXETWFzdGVyIFRocmVhZDxicj4KICAgICAgICDU2klubm9EQjEuMC54sOaxvtaux7CjrElubm9EQrTmtKLS/cfmttTT2klPxuTKtcrH09DP3rXEo6zU2ru6s+Wz2M/rtMXFzMui0MLKscbkyrW2vNf2wcvSu7aotcTTsrHgwusoaGFyZCBjb2RpbmcpoaPU2lNTRLP2z9bWrrrzo6zV4tbWuea2qNTauty087PMtsjJz8/e1sbBy0lubm9EQrTmtKLS/cfmttS0xcXMSU+1xNDUxNyjrNPIxuTKx9C0yOvQ1MTcoaO008eww+a1xL3pydzAtL+0o6zO3sLbus7KsaOsSW5ub0RCtOa0otL9x+bX7rTz1ru74cui0MIxMDC49tKztb20xcXMo6y6z7KiMjC49rLlyOu7urPloaPI57n7ysfU2tC0yOvD3LyvtcTS/dPDs8zQ8tbQo6zDv8Prv8nE3LvhsvrJ+rTz09oxMDC49rXE1ODSs6OsyOe5+8rHsvrJ+rTz09oyMLj2suXI67u6s+W1xMfpv/ajrE1hc3RlciBUaHJlYWQmIzIwMjg0O7r119zKx7vhJnF1b3Q7w6ayu7n9wLQmcXVvdDuho7y0yrm0xcXMxNzU2jHD68TatKbA7bbg0+AxMDC49tKztcTQtMjrus0yMLj2suXI67u6s+W1xLrPsqKjrLWrysfTydPaaGFyZAogY29kaW5nLE1hc3RlciBUaHJlYWTSsta7u+HRodTxy6LQwjEwMLj21ODSs7rNus+yojIwuPay5cjru7qz5aGjzazKsaOstbG3osn65bS7+tDo0qq71ri0ysejrNPJ09q63Lbgyv2+3bu5w7vT0Mui0MK72LTFxcyjrLvYtb3Iy7vWuLS1xMqxvOS/z8Tc0OjSqrrcvsOho9XrttTV4rj2zsrM4klubm9EQiBQbHVnaW4otNNJbm5vREIxLjAueLDmsb6/qsq8KczhuanBy7LOyv1pbm5vZGJfaW9fY2F0YWNpdHmjrNPDwLSx7cq+tMXFzElPtcTNzM3Cwb+jrMSsyM8yMDCho7bU09rLotDCtb20xcXM0rO1xMr9wb+jrLvhsLTV1Wlubm9kYl9pb19jYXBhY2l0ebXEsNm31rHIwLS9+NDQv9jWxqGjuebU8sjnz8I6PGJyPgogICAgICAgICAgICBhLtTaus+yorLlyOu7urPlyrGjrLrPsqKy5cjru7qz5bXEyv3Bv86qaW5ub2RiX2lvX2NhcGFjaXR5JiMyMDU0MDu1xDUwJTs8YnI+CiAgICAgICAgICAgIGIu1Nq007u6s+XH+Mui0MLU4NKzyrGjrMui0MK1xNTg0rO1xMr9wb/Oqmlubm9kYl9pb19jYXBhY2l0eTs8YnI+CiAgICAgICAgyPTTw7unyrnTw8HLU1NEwOC1xLTFxcyjrLvy1d+9q7y4v+m0xcXM1/bBy1JBSUSho7WxtOa0osnosbjTtdPQuPy437XESU/L2bbIysejrL/J0tS9q2lubm9kYl9pb19jYXBhY2l0ebXEJiMyMDU0MDu197Tz0LSjrNaqtcC3+7rPtMXFzElPtcTNzM3Cwb+ho0lubm9EQjEuMC54sOaxvrXEwe3Su7j2ss7K/Wlubm9kYl9hZGFwdGl2ZV9mbHVzaGluZyjX1MrK06a12Mui0MIpo6y4wyYjMjA1NDA707DP7MO/w+vLotDC1ODSs7XEyv3Bv6Gj1K3AtLXEy6LQwrnm1PLKxzrU4NKz1Nq7urTmy/nVvLHIwP3QodPaaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3TKsaOssrvLotDC1ODSs6OstPPT2mlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0yrGjrMui0MIxMDC49tTg0rOho8vm18Vpbm5vZGJfYWRhcHRpdmVfZmx1c2hpbmeyzsr9tcTS/cjro6xJbm5vREK05rSi0v3H5rvhzai5/dK7uPZidWZfZmx1c2hfZ2V0X2Rlc2lyZWRfZmx1c2hfcmF0ZbXEuq/K/cC0xdC2z9Do0qrLotDC1ODSs9fuus/KyrXEyv3Bv6GjtPPWwrXE1/a3qMrHzai5/cXQts+y+sn61tjX9sjV1r61xMvZtsjAtL72tqjX7rrPysq1xMui0MLU4NKzyv3Bv6Gj0vK0y6OstbHU4NKztcSxyMHQ0KHT2mlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0yrGjrNKyu+HLotDC0ru2qMG/tcTU4NKzoaM8YnI+CjxwPiAgICAgICAgu7nT0NK7uPa4xLHkysc61q7HsMO/tM69+NDQZnVsbCBwdXJnZbLZ1/fKsaOs1+624LvYytUyMLj2VW5kb9KzoaO000lubm9EQjEuMC54sOaxvr+qyrzS/cjrss7K/Wlubm9kYl9wdXJnZV9iYXRjaF9zaXplo6y4w7LOyv2/ydLUv9jWxsO/tM5mdWxsIHB1cmdlu9jK1bXEVW5kb9KztcTK/cG/o6zErMjPMjCho7/J0tS2r8ystcS21MbkvfjQ0NDeuMSho82ouf3D/MHuc2hvdyBlbmdpbmUgaW5ub2RiIHN0YXR1c7/J0tSy6b+0tbXG2k1hc3RlciBUaHJlYWS1xNe0zKzQxc+ioaPI58/Czbw6PC9wPgo8cD48aW1nIHNyYz0="http://img.blog.csdn.net/20141209120143421" alt="\">
有图可知,主循环进行了1154432次,每秒挂起(sleep)的操作进行了1154432次,10秒一次的活动进行了106465次,background loop进行了90829次,flush loop进行了90829次。
3.InnoDB 1.2.x版本的Master Thread
InnoDB 1.2.x版本中,Master Thread的伪代码如下:


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本站3月7日消息,华为数据存储产品线总裁周跃峰博士日前出席MWC2024大会,专门展示了为温数据(WarmData)和冷数据(ColdData)设计的新一代OceanStorArctic磁电存储解决方案。华为数据存储产品线总裁周跃峰发布系列创新解决方案图源:华为本站附上华为官方新闻稿内容如下:该方案的成本比磁带低20%,功耗比硬盘低90%。根据国外科技媒体blocksandfiles报道,华为发言人还透露了关于该磁电存储解决方案的信息:华为的磁电磁盘(MED)是对磁存储介质的重大创新。第一代ME

Vue3+TS+Vite开发技巧:如何进行数据加密和存储随着互联网技术的快速发展,数据的安全性和隐私保护变得越来越重要。在Vue3+TS+Vite开发环境下,如何进行数据加密和存储,是每个开发人员都需要面对的问题。本文将介绍一些常用的数据加密和存储的技巧,帮助开发人员提升应用的安全性和用户体验。一、数据加密前端数据加密前端加密是保护数据安全性的重要一环。常用

什么是缓存?缓存(发音为ka·shay)是一种专门的高速硬件或软件组件,用于存储经常请求的数据和指令,这些数据和指令又可用于更快地加载网站、应用程序、服务和系统的其他部分。缓存使最常访问的数据随时可用。缓存文件与缓存内存不同。缓存文件是指经常需要的文件,如PNG、图标、徽标、着色器等,多个程序可能需要这些文件。这些文件存储在您的物理驱动器空间中,通常是隐藏的。另一方面,高速缓存内存是一种比主内存和/或RAM更快的内存类型。它极大地减少了数据访问时间,因为与RAM相比,它更靠近CPU并且速度

Git是一个快速、可靠、适应性强的分布式版本控制系统。它旨在支持分布式的非线性工作流,使其成为各种规模的软件开发团队的理想选择。每个Git工作目录都是一个独立的存储库,具有所有更改的完整历史记录,并能够跟踪版本,即使没有网络访问或中央服务器。GitHub是托管在云上的Git存储库,它提供了分布式修订控制的所有功能。GitHub是Git的存储库,托管在云上。与作为CLI工具的Git不同,GitHub有一个基于Web的图形用户界面。它用于版本控制,这涉及到与其他开发人员协作,并跟踪随时间推移对脚本和

InnoDB是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一;InnoDB采用双轨制授权,一个是GPL授权,另一个是专有软件授权。InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID);InnoDB支持行级锁,行级锁可以最大程度的支持并发,行级锁是由存储引擎层实现的。

InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我们想从表中获取某些记录时,InnoDB存储引擎需要一条一条的把记录从磁盘上读出来么?InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为16

如何正确使用sessionStorage存储敏感信息,需要具体代码示例无论是在Web开发还是移动应用开发中,我们常常需要存储和处理敏感信息,如用户登录凭证、身份证号码等。在前端开发中,使用sessionStorage是一种常见的存储方案。然而,由于sessionStorage是基于浏览器的存储,需要注意一些安全性的问题,以确保存储的敏感信息不被恶意访问和利用

10月8日消息,美国汽车市场正在经历一场引擎盖下的变革,以前备受喜爱的六缸和八缸动力发动机正逐渐失去统治地位,而三缸发动机则崭露头角。10月8日的消息显示,美国汽车市场正在经历一场引擎盖下的变革。过去备受喜爱的六缸和八缸动力发动机正在逐渐失去统治地位,而三缸发动机则开始崭露头角在大多数人的印象中,美国人钟情于大排量车型,而"美式大V8"一直是美国车的代名词。然而,根据外媒近期公布的数据,美国汽车市场的格局正在发生巨大变化,引擎盖下的战斗正愈演愈烈。据了解,在2019年之前,美
