openGauss 数据库启动流程走读

本文详细描述了数据库启动过程中Postmaster线程的职责,包括初始化系统、环境变量,创建内存上下文,处理启动参数,以及进入ServerLoop进行会话管理和服务调度。涵盖了GUC设置、内存上下文创建、线程初始化等多个关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库启动流程

一些概念

  • 常规启动模式下,最先启动的是postmaster线程,postmaster线程作为一切的起始,完成各类模块功能的初始化,拉起一系列子线程,最后postmaster转为守护线程,一直在ServerLoop()中负责处理会话连接、线程拉起、信号处理转发等等。

main 函数

    初始化用于系统调用的锁。 例如操作环境变量时,使用env_lock保护,还有getpwuid_lock等,在这里被称为系统调用,syscall。
    检查'GAUSS_MMAP_THRESHOLD'环境变量。
    
    g_instance的遍历初始化。
    knl_instance_init() {
        
        一些内存上下文的初始创建。
        
        一些变量、值的赋值为初始值:
            0、null、false等
            类实例的初始化一个实例
            一段初始内存的申请
            一些默认值,如data目录内的文件夹名称等
        
        一些结构的创建:
            vec_func_hash:内置函数的哈希表
        
        ......
    }
    
    又创建了几个内存上下文:增量ckpt的,通信的等。
    
    创建ThreapTopMemoryContext等上下文,并初始化一些内存上下文用法的变量,保证内存上下文可用
    
    
    t_thrd的遍历初始化
    knl_thread_init(MA
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值