对PostgreSQL中bufmgr.c 的BgBufferSync的静态变量学习 --prev_strategy_buf_id

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:

开始

复制代码
bool                
BgBufferSync(void)                
{                
    ……            
    /*            
     * Information saved between calls so we can determine the strategy            
     * point's advance rate and avoid scanning already-cleaned buffers.            
     */            
    static           bool          saved_info_valid = false;            
    static           int        prev_strategy_buf_id;    
    static          uint32         prev_strategy_passes;    
    static          int        next_to_clean;    
    static     uint32     next_passes;  
                
    /* Moving averages of allocation rate and clean-buffer density */            
    static     float     smoothed_alloc = 0;    
    static     float     smoothed_density = 10.0;    
                
    ……         
                
    if (saved_info_valid)            
    {            
        ……        
        strategy_delta = strategy_buf_id - prev_strategy_buf_id;        
        strategy_delta += (long) passes_delta *NBuffers;        
        ……     
    }            
    else            
    {            
        ……        
    }            
    
fprintf(stderr,"before saving, prev_strategy_buf_id is %d \n", prev_strategy_buf_id);
/* Update saved info for next time */ prev_strategy_buf_id = strategy_buf_id; prev_strategy_passes = strategy_passes; saved_info_valid = true; …… fprintf(stderr,"prev_strategy_buf_id is %d \n", prev_strategy_buf_id); /* Return true if OK to hibernate */ return (bufs_to_lap == 0 && recent_alloc == 0); }
复制代码

执行的结果显示,即使我用psql 变更了某行的值,直到最后,prev_strategy_buf_id 的值也没有发生根本性的变化。

复制代码
[postgres@localhost bin]$ ./postgres -D /usr/local/pgsql/data        
LOG:  database system was shut down at 2012-11-02 15:30:38 CST        
saved_info_valid false.        
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
LOG:  autovacuum launcher started        
LOG:  database system is ready to accept connections        
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
        
……        
        
        
before saving,prev_strategy_buf_id is: 0        
prev_strategy_buf_id is 0         
LOG:  received fast shutdown request        
LOG:  aborting any active transactions        
LOG:  autovacuum launcher shutting down        
LOG:  shutting down        
LOG:  database system is shut down        
[postgres@localhost bin]$         
复制代码
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
关系型数据库 数据库 C语言
PostgreSQL服务端开发学习 -- Datum
在使用C语言开发PostgreSQL后端、客户端应用时,Datum无处不在,所以必须要对Datum有很清楚的了解。
|
关系型数据库 分布式数据库 数据库
沉浸式学习PostgreSQL|PolarDB 19: 体验最流行的开源企业ERP软件 odoo
本文主要教大家怎么用好数据库, 而不是怎么运维管理数据库、怎么开发数据库内核.
1111 2
|
SQL 关系型数据库 测试技术
沉浸式学习PostgreSQL|PolarDB 20: 学习成为数据库大师级别的优化技能
在上一个实验《沉浸式学习PostgreSQL|PolarDB 19: 体验最流行的开源企业ERP软件 odoo》 中, 学习了如何部署odoo和polardb|pg. 由于ODOO是非常复杂的ERP软件, 对于关系数据库的挑战也非常大, 所以通过odoo业务可以更快速提升同学的数据库优化能力, 发现业务对数据库的使用问题(如索引、事务对锁的运用逻辑问题), 数据库的代码缺陷, 参数或环境配置问题, 系统瓶颈等.
936 1
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
本文将带领大家来体验一下如何将“千问大模型+文本向量化模型”植入到PG|PolarDB中, 让数据库具备AI能力.
25088 19
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
|
关系型数据库 C语言 PostgreSQL
PostgreSQL服务端开发学习 --- 常用结构及宏定义1
本篇主要讲解使用C语言开发PostgreSQL服务端应用(libpq、自定义函数、扩展)常用到的结构及宏定义。
|
3月前
|
SQL 存储 关系型数据库
新手如何入门学习PostgreSQL?
新手如何入门学习PostgreSQL?
|
3月前
|
SQL 存储 关系型数据库
PostgreSQL核心之SQL基础学习
PostgreSQL核心之SQL基础学习
38 3
|
4月前
|
SQL 存储 关系型数据库
关系型数据库PostgreSQL学习
【7月更文挑战第4天】
452 2
|
5月前
|
存储 关系型数据库 数据库
经验大分享:PostgreSQL学习之【用户权限管理】说明
经验大分享:PostgreSQL学习之【用户权限管理】说明
43 0
|
关系型数据库 定位技术 分布式数据库
沉浸式学习PostgreSQL|PolarDB 18: 通过GIS轨迹相似伴随|时态分析|轨迹驻点识别等技术对拐卖、诱骗场景进行侦查
本文主要教大家怎么用好数据库, 而不是怎么运维管理数据库、怎么开发数据库内核.
1301 1