Postgresql - 源码 - 数据库启动
数据库启动,一个很简单的举动,只需要执行一条命令,
OS上执行的service postgresql start 或者 systemctl status postgresql.service
或是直接执行数据库启动命令
/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 -l /usr/local/pgsql/logs/pg...
Postgresql - 源码 - backend启动
如何调到这个postmaster子进程呢,后台程序
postmaster backend子进程存在在backend/main/main.c
1. 进入到src/backend/main/main.c中,查看后台主函数main
/*
* ......
* This does some essential startup tasks for any incarnation of ...
Postgresql - 源码 - 数据库启动 -StartChildProcess
启动其他子进程。such as the bgwriter, walwriter, walreceiver, bootstrapper and the shared memory checker code.
包括 src/backend/postmaster/postmaster.c 中的
#define StartupDataBase() StartChildProcess(...
Postgresql - Vacuuming
vacuum是PG中很重要的知识点,值得好好学习,自己写的没有官方文档的详细,最后还是选择翻译。
以下内容翻译自官方文档
https://www.postgresql.org/docs/11/static/routine-vacuuming.html
*****************************************************************...
Postgresql - 源码 - autovacuum deamon
什么是vacuum。在这一文章中就不多阐述了。我们来看一下autovacuum的代码。
代码中的注释信息 ( 代码位置 src/backend/postmaster/autovacuum.c ):
******************************************************************
autovacuum系统是由两种不同的过程构成的:aut...
Postgresql - 源码 - walreceiver process
启动进程时执行一个函数,这个函数是walreceiver 进程的主入口。
WalReceiverMain()
代码位置:
src/backend/replication/walreceiver.c
下面我们看一下主入口函数
/* Main entry point for walreceiver process */
void
WalReceiverMain(void...
Postgresql - 源码 - WalWriter process
启动时执行两个函数
InitXLOGAccess(); 代码位置 src/backend/access/transam/xlog.c
WalWriterMain(); 代码位置 src/backend/postmaster/walwriter.c
InitXLOGAccess()的解释是:在创建WAR记录之前,必须在后端过程中调用。我们需要初始化ThisTimeLineID 和 Red...
Postgresql - 源码 - WAL Sender process
介绍:
WAL sender process 是9.0的新功能。需要从主服务器发送XLOG到单个recipient(备机)。注意可以同时存在多个walsender进程。当备用服务器的walreceiver连接到主服务器并请求XLOG streaming replication的时候,由postmaster启动walsender process。
walsender类似于常规后端,连接和wals...
Postgresql - 监控 moniter - 监控日志
监控日志,之前介绍过一个第三方工具,pgbadger。非常的好用。
这次介绍其他的方法。1. 通过ELK监控日志。2. 借助filebeats,kafka,自己编写的监控脚本。
通过ELK监控日志
说是监控日志,其实ELK主要的功能是对文件进行收集和统计。比如某个数据库的错,在一段时间出现的次数。
1. 首先搭建kafka,logstash,kibana,ElasticSearch服...
Postgresql - 源码 - checkpointer process
代码位置:
src/backend/postmaster/checkpointer.c
代码中的注释:
检查指针是Postgres 9.2 的新功能。它处理所有checkpoint。checkpoint在从上一个checkpoint经过一定时间之后自动调度,并且还可以用信号通知它执行所请求的checkpoint。(每隔这么多WAL段指定一个checkpoint的GUC参数通过在它们填充...
Postgresql - 源码 - logger process
代码位置:
src/backend/postmaster/syslogger.c
system logger是从PG 8开始的。通过重定向到管道来捕获来自Postmaster, backends, 和其他的子进程的所有stderr,并写入日志文件。可以再postgresql.conf 中配置日志文件的 size 和 age限制。如果达到了限制,关闭当前日志文件,并创建新的日志文件。日志文...
Postgresql - 源码 - stats collector process
代码位置:
src/backend/postmaster/pgstat.c
所有的统计信息收集器的东西放在一个大的丑陋的文件。
TODO:
- Separate collector, postmaster and backend stuff into different files. 单独收集,postmaster和backend内容到不同的文件。
- Add some autom...
Postgresql - 源码 - background writer process
代码位置
src/backend/postmaster/bgwriter.c
background writer (bgwriter)是PG 8.0的新特性。视图避免常规后端必须写出脏共享缓冲区(只有在需要释放共享缓冲区以在另一页中读取时才会这样做。)最佳方案中,共享缓冲区的所有写入将由后台写入器进程发出。但是,如果 bgwriter 无法保持足够干净的缓冲区,则定期后端仍然有权发出写入...
linux下GTK编程:显示CPU使用率,内存使用率,网速。
StartOS 5.1版GNOME核心linux用了一段时间后,一直想视窗编程,QT最先搭建好,QT入门做了一个系统信息,重装系统后发现不能运行了,要安装QT环境才能运行,于是想做一种低依赖的系统级编程,因为StartOS已经停止更新了,千辛万苦第三次才成功搭建GTK环境,结合C语言对QT源码进行移植,并做了一些改进,最终窗口界面是一样的。
#include
#include
#
QWebView多标签浏览器
网上资料太少了,我来做个成品,供大家学习。
特色:多标签,开发者工具,自己设计的收藏夹和历史记录。
源码地址:https://github.com/sonichy/Qt_HTYBrowser
eclipse导出调试配置信息
使用 eclipse 进行嵌入式开发时,常常需要配置调试选项,而且常常需要配置多个不同的调试类别,如 Debug、Release、flash等等。当需要提供给用户工程文件时,调试信息常常会发生变化,用户需要重新配置调试信息,这样的做法既不安全也不人性化。试想如果一个并不懂调试配置的用户使用你提供的工程时,他会不会被调试配置搞的一头乱麻呢?
eclipse 支持将调试配置信息导出到 launch 文...
今日推荐
周排行