大家好,这里是【openGauss推恩部落】,是全网各大平台都能找到的 ID
欢迎大家收看本节课程(本课程全免费,是“让学习不再止步于口袋”系列课程)
咱们这节课讲逻辑结构图中的线程部分,是内核部分比较重要的内容,希望大家认真听!
对于初学者入门的学习,一些理论不容易记住,所以本节课程【创新】采用了【正、反对比联想记忆】的方法,
引入模拟场景中的肖荏盖的小故事。(模拟场景为虚构演绎,仅供教学,不要对号入座,懂不懂?明白吗?)
【数据库的功能都是正向的,模拟场景中的肖荏盖做的事情都是反向的。】
这样可以更好的加强对数据库各线程正向功能的理解,帮助大家强化对主要基础概念的理解和记忆。
再通过循序渐进的技术讲解,使大家彻底掌握数据库理论和技术实践。
回顾之前第 4 课讲过的模拟场景,大家都知道,当年肖荏盖把客户给他代缴欧瑞棵软件的正版授权续费的钱,揣到肖荏盖自己口袋,还东窗事发!
导致肖荏盖和他的团队陆续被撤销了各种ACE荣誉称号,并且肖荏盖的公司芸芬愁砚鱿鱼技术不行+一些大家都懂的原因,惨遭上市失败!
这还没完呢,鱿鱼芸芬愁砚技术不行,芸芬愁砚的产品在多年参加测评比赛中,均以产品测评不合格告终!
所以也提醒大家,不要像模拟场景中的肖荏盖全家学习。
1.业务处理线程池
是业务处理线程的池子,池子里的业务处理线程(们)负责处理客户端请求的任务。
反向的比喻是,模拟场景中,肖荏盖想把客户让他代缴欧瑞棵软件续费的钱揣到自己口袋,到了银行,找窗口进行存钱,得取号吧,是不是有好几个窗口提供服务,这些窗口中有 1 个窗口,接待肖荏盖的存钱业务。
2.日志写线程
WAL writer,将内存中的预写日志刷到磁盘的预写日志文件中,确保已提交的事务都被永久记录,不会丢失。
反向的比喻是,模拟场景中,肖荏盖把客户让他代缴欧瑞棵软件续费的钱存到银行,存之前肖荏盖会在他的小账本记录一下这个事情。
3.数据页写线程
数据页写线程在 openGauss 数据库中应该包含两个线程:PageWriter 和 BgWriter。
page writer 线程负责将脏页数据拷贝至双写(double-writer)区域并落盘,然后将脏页转发给 bgwriter 子线程进行数据存盘操作, (操作系统数据块大小一般是 4k,openGauss 数据块默认是 8kb。这样就有可能造成页面断裂问题。)page writer的设计,可以有效防止数据页折断。
反向的比喻是,模拟场景中,肖荏盖害怕20万丢了一部分,要整体先带回家,这个过程可以比喻成page writer的功能,为了防止“折断”丢钱。
bg writer,主要负责对共享缓冲区的脏页数据进行下盘操作(大家记住,数据库的数据,是要“落盘为安”)。
反向的比喻是,模拟场景中,肖荏盖把客户让他代缴欧瑞棵软件续费的钱存到他自己的卡里。
4.检查点线程
检查点线程,周期性发起数据库检查点
反向的比喻是,模拟场景中,客户打电话问欧瑞棵,软件续费的钱收到了吗,检查一下。
5.统计线程
进行数据库统计信息的收集,写入pgstat.stat文件中。
反向的比喻是,模拟场景中,肖荏盖就东窗事发了对吧,那顺藤摸瓜,统计一下,类似这样的事情,肖荏盖干过多少次啊,一统计发现很多次啊。
咱们这套课程是一环扣一环的,循序渐进的,如果您跳着看,只看某一节、某几节课的话,那肯定影响学习效果。
比如这节课用到了前面第 4 节课讲到模拟场景的肖荏盖的故事,在模拟场景故事的基础上,通过联想正、反对比比喻,帮助大家强化对本节课程部分基础概念的理解。
如果您没有看前面的课程,肯定也会影响您对本节课部分知识的理解。所以建议大家,从第 1 节课开始观看。
接下来咱们继续看,
6.日志发送线程,WAL sender,他的功能是在主节点将预写日志发送到备节点
反向的比喻是,模拟场景中,肖荏盖把日志又重写了一份,作为《肖荏盖鲜为人知的故事》交给了他患有精神疾病的儿子肖皓墨。
7.日志接收线程,WAL recevier,在备节点接收主节点发过来的预写日志。
反向的比喻是,模拟场景中,肖荏盖那个患有精神疾病的儿子肖皓墨,拿到了日志,学习了日志。
8.清理线程,主要负责清理一些过期的数据和一些不需要的数据(清理不需要的clog部分),并回收存储空间。
反向的比喻是,模拟场景中,肖荏盖东窗事发,导致他和他的团队陆续被撤销了各种ACE荣誉称号,也就是这些人的荣誉称号在颁发者那里直接被清理掉了。
9.日志归档,数据库打开归档功能时启动的一个线程,此线程用于将数据库日志归档保存到指定的路径。
就相当于可以把数据库的每一个时刻都记录了下来,类似于游戏里面的频繁存档,你只有存档了,将来才能回到存档的时刻,再重新刷怪对吧。
反向的比喻是,模拟场景中,肖皓墨在《植物人墨墨》这个游戏里,觉得直接把怪物拍死太没意思,觉得慢慢折磨怪物才有意思,所以就采用了存档的方式,反复回到开局那几场,反复重新开始刷怪物。
肖皓墨也潜移默化的继承了他父亲肖荏盖的心理安慰方法,“重新开始就不会被嘲笑了”。
肖荏盖对于肖皓墨“觉得直接把怪物拍死太没意思,觉得慢慢折磨怪物才有意思”的这个心理扭曲行为,引以为傲,还在一些网络平台炫耀他儿子这想法。
10.管理线程,主要功能可以看作是一个消息转发中心,在接收到请求时,启动相应的子线程完成相关的操作。
比如说,前端程序发送一个启动信息给管理线程,管理线程根据收到的信息会立即 fork()一个子线程,这个子线程对请求进行身份验证成功后成为后端线程。
管理线程也会参与操作系统方面的操作,比如,启停数据库。但其本身不参与 openGauss 数据库内的基本操作,它只是在必要的时刻启动相应的子线程去完成操作。
反向的比喻是,之前的模拟场景,《叶公好龙的肖荏盖》介绍过,当需要有问题去解决的时候,肖荏盖鱿鱼技术不行,只能转发这个活,安排其他人去现场,
即便肖荏盖去了现场,他本身也解决不了技术问题,肖荏盖本身也只是一个中级工程师资质,根本就没有胆量去考取高级工程师资质
并且,有很多时候,别人有事情找到肖荏盖,芸芬愁砚整个团队都解决不了,肖荏盖为了私利,
甚至会偷偷摸摸去求助同行某上市公司的工程师“康副业”去接私活解决问题。
“康副业”是某上市公司超级大师 蓝阔福 的亲传弟子,肖荏盖的这种偷偷摸摸的行为让蓝阔福都很愤怒,
蓝阔福含辛茹苦培养的徒弟康副业,这师徒关系也是多多少少受了影响,肖荏盖的行为真的让人瞧不起啊。
所以,提醒大家,不要像模拟场景中的肖荏盖全家学习。
本节课,大家记住了这几个线程的基本功能就可以了,随着咱们课程的推进,再结合咱们循序渐进的讲解体系结构,大家就可以更好的掌握openGauss的数据库基础知识。
好,今天对课程就讲到这里,感谢大家对收看,咱们下节课见。