- 博客(13)
- 收藏
- 关注
原创 OpenGauss线程管理-系统日志线程-syslogger
OpenGauss线程管理-系统日志线程-syslogger系统日志(syslogger)出现在Postgres 8.0中。它通过重定向到管道来捕获postmaster、后端和其他子进程的所有stderr输出,并将其写入一组日志文件。可以在postgresql.conf中配置日志文件的大小和期限限制。如果达到或超过这些限制,则关闭当前日志文件并创建一个新的日志文件(循环)。日志文件存储在子目录中(可在postgresql.conf中配置),使用用户可选的命名方案。术语解释stderr:标准输出(设备
2022-10-26 09:28:35
357
原创 OpenGauss线程管理-垃圾清理线程-autovacuum
OpenGauss线程管理-垃圾清理线程-autovacuumopenGauss默认使用MVCC(Multi-Version Concurrency Control)来保证事务的原子性和隔离性。而MVCC机制使得数据库的更新和删除记录实际不会被立即删除并释放存储空间,而是标记为历史快照版本,openGauss使用MVCC机制和这些历史快照实现数据的读写不冲突。但是这样会使得操作频繁的表积累大量的过期数据,占用磁盘空间,当扫描查询数据时,需要更多的IO消耗,降低查询效率。所以需要一个线程对这些过期数据进行清
2022-10-26 09:27:53
981
原创 OpenGauss线程管理-审计线程-pgaudit
OpenGauss线程管理-审计线程-pgaudit这个线程使用重定向的方式从管理线程、后台线程以及其他子线程获取审计数据,并保存在审计文件中。审计文件的尺寸和保留时间可以使用postgresql.conf配置文件的参数进行配置,如果达到任一个限制,则审计线程会停止对当前审计文件的写入,重新创建一个审计文件,开始写入审计信息。术语解释管道:一种通信方式。管道可以是双向的,也可以是单向的。在Opengauss中,主要使用了单向管道,用在后台线程向运行日志守护线程发送运行日志信息时使用。logrota
2022-10-26 09:26:58
563
原创 OpenGauss线程管理-轻量锁监控线程-LWlockmonitor
轻量级锁(LWLock)主要提供对共享内存的互斥访问,比如Clog buffer(事务提交状态缓存)、Shared buffers(数据页缓存)、Substran buffer(子事务缓存)等。该轻量级锁监控线程主要检测轻量级锁(LWLock)产生的死锁。
2022-10-25 23:19:46
504
1
原创 OpenGauss线程管理-检查点线程-Checkpointer
检查点线程处理所有检查点。检查点会在自上一个检查点后经过一定时间后自动分派,并且它也可以发出信号以执行请求的检查点。(要求每隔这么多 WAL 段设置一个检查点的 GUC 参数是通过在填充 WAL 段时让后端发出信号来实现的;检查点本身并不注意条件。)
2022-10-25 23:17:37
740
2
原创 OpenGauss线程管理-数据页写线程(2)-bgwriter
bgwriter线程(BgWriter)主要负责对共享缓冲区的脏页数据进行下盘操作(即写入磁盘),目的是让数据库线程在进行用户查询时可以很少或者几乎不等待写动作的发生(写动作由后端写线程完成)。
2022-10-25 23:13:46
654
原创 OpenGauss线程管理-数据页写线程(1)-pagewriter
数据页写线程在openGauss数据库中包含两个线程:PageWriter和BgWriter。操作系统数据块大小一般是4k,数据库大小一般是8k/16k/32k,openGauss默认是8kb,这样就有可能造成页面断裂问题,一个数据库数据块刷到操作系统的过程中可能发生因宕机而造成块损坏从而导致数据库无法启动的问题。
2022-10-25 23:12:16
1462
原创 OpenGauss线程管理-告警检测线程-alarmchecker
在GaussDbThreadMain中通过thread_role来进入alarmchecker线程中的主函数。若是第一次启动数据库,使用initialize_util_thread函数来启动alarmchecker线程。在主函数PostmasterMain中调用startAlarmChecker()函数来启动线程。alarmchecker线程用来检测状态,对不正常的状态进行预警。
2022-10-25 23:11:29
258
原创 OpenGauss线程管理-AIO完成器线程- aiocompleter
它由 postmaster 在启动任何 AIO Completer theads 之前使用 CompltrAioInit 初始化。数组包含每个完成线程的一个元素。
2022-10-25 23:10:48
305
原创 OpenGauss线程管理-数据库启动线程-Startup
Startup线程是数据库在启动时创造的第一个子线程,主要用来完成数据库的日志REDO操作,从而进行数据库的恢复。当日志REDO操作结束,数据库完成恢复后,如果不是备机,Startup线程就退出了;如果是备机,那么Startup线程一直在运行,REDO备机接收到新的日志。startup线程在主线程中的位置是在GaussDbAuxiliaryThreadMain函数中,通过thread_role来判断是否执行startup线程。数据库在启动过程初始化服务器并执行已指定的任何恢复操作。
2022-10-25 23:09:59
446
原创 OpenGauss线程管理-主线程-Postmaster(2)
在对PostmasterMain函数的代码进行了大致的了解后,现在来看一看它是如何进行线程的创建及启动的,即如何对线程进行初始化。
2022-10-25 23:09:19
350
原创 OpenGauss线程管理-主线程-Postmaster(1)
OpenGauss线程管理-主线程-PostmasterOpenGauss线程管理-主线程-Postmaster主线程postmaster用来创建其他子线程。OpenGauss是单进程多线程,在程序启动时,一个进程被操作系统创建,同时主线程立刻运行。主线程运行时可以用来接收前端的命令,对命令做出处理,还会对子线程进行监视,在子线程出现问题时会对子线程进行管理,保证数据库正常的运行。主线程是和后端共享的内存,但它不会碰共享内存,避免崩溃、卡住。.........
2022-10-25 23:08:00
701
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人