PostgreSQL 10.0 preview 功能增强 - 新增数十个IO等待事件监控

简介:

标签

PostgreSQL , 10.0 , 等待事件 , IO


背景

PostgreSQL 10.0新增了数十个IO等待事件,描述系统调用的等待。

Hi All,  

Attached is the patch, which extend the existing wait event infrastructure  
to  
implement the wait events for the disk I/O. Basically pg_stat_activity's  
wait  
event information to show data about disk I/O as well as IPC primitives.  

Implementation details:  

- Added PG_WAIT_IO to pgstat.h and a new enum WaitEventIO  
- Added a wait_event_info argument to FileRead, FileWrite, FilePrefetch,  
FileWriteback, FileSync, and FileTruncate. Set this wait event just before  
performing the file system operation and clear it just after.  
- Pass down an appropriate wait event from  caller of any of those  
functions.  
- Also set and clear a wait event around standalone calls to read(),  
write(), fsync() in other parts of the system.  
- Added documentation for all newly added wait event.  

Open issue:  
- Might missed few standalone calls to read(), write(), etc which need  
to pass the wait_event_info.  

Thanks to my colleague Robert Haas for his help in design.  

Please let me know your thought, and thanks for reading.  

Thanks,  
Rushabh Lathia  
www.EnterpriseDB.com  

IO等待事件如下

 /* ----------  
+ * Wait Events - IO  
+ *  
+ * Use this category when a process is waiting for a IO.  
+ * ----------  
+ */  
+typedef enum  
+{  
+   WAIT_EVENT_READ_DATA_BLOCK,  
+   WAIT_EVENT_WRITE_DATA_BLOCK,  
+   WAIT_EVENT_SYNC_DATA_BLOCK,  
+   WAIT_EVENT_EXTEND_DATA_BLOCK,  
+   WAIT_EVENT_FLUSH_DATA_BLOCK,  
+   WAIT_EVENT_PREFETCH_DATA_BLOCK,  
+   WAIT_EVENT_WRITE_REWRITE_DATA_BLOCK,  
+   WAIT_EVENT_SYNC_REWRITE_DATA_BLOCK,  
+   WAIT_EVENT_TRUNCATE_RELATION_DATA_BLOCKS,  
+   WAIT_EVENT_SYNC_RELATION,  
+   WAIT_EVENT_SYNC_IMMED_RELATION,  
+   WAIT_EVENT_READ_BUFFILE,  
+   WAIT_EVENT_WRITE_BUFFILE,  
+   /* Wait event for XLOG */  
+   WAIT_EVENT_READ_XLOG,  
+   WAIT_EVENT_READ_COPY_XLOG,  
+   WAIT_EVENT_WRITE_XLOG,  
+   WAIT_EVENT_WRITE_INIT_XLOG_FILE,  
+   WAIT_EVENT_WRITE_COPY_XLOG_FILE,  
+   WAIT_EVENT_WRITE_BOOTSTRAP_XLOG,  
+   WAIT_EVENT_SYNC_INIT_XLOG_FILE,  
+   WAIT_EVENT_SYNC_COPY_XLOG_FILE,  
+   WAIT_EVENT_SYNC_BOOTSTRAP_XLOG,  
+   WAIT_EVENT_SYNC_ASSIGN_XLOG_SYNC_METHOD,  
+   /* Wait event for CONTROL_FILE */  
+   WAIT_EVENT_WRITE_CONTROL_FILE,  
+   WAIT_EVENT_WRITE_UPDATE_CONTROL_FILE,  
+   WAIT_EVENT_SYNC_WRITE_CONTROL_FILE,  
+   WAIT_EVENT_SYNC_UPDATE_CONTROL_FILE,  
+   WAIT_EVENT_READ_CONTROL_FILE,  
+   /* Wait event for REORDER BUFFER */  
+   WAIT_EVENT_READ_REORDER_BUFFER,  
+   WAIT_EVENT_WRITE_REORDER_BUFFER,  
+   /* Wait event for LOGICAL MAPPING */  
+   WAIT_EVENT_READ_APPLY_LOGICAL_MAPPING,  
+   WAIT_EVENT_WRITE_LOGICAL_MAPPING_REWRITE,  
+   WAIT_EVENT_SYNC_LOGICAL_MAPPING_REWRITE,  
+   WAIT_EVENT_SYNC_LOGICAL_MAPPING_REWRITE_HEAP,  
+   WAIT_EVENT_TRUNCATE_LOGICAL_MAPPING_REWRITE,  
+   /* Wait event for SNAPBUILD */  
+   WAIT_EVENT_WRITE_SNAPBUILD_SERIALIZE,  
+   WAIT_EVENT_READ_SNAPBUILD_RESTORE,  
+   WAIT_EVENT_SYNC_SNAPBUILD_SERIALIZE,  
+   /* Wait event for SNRU */  
+   WAIT_EVENT_READ_SLRU_PAGE,  
+   WAIT_EVENT_WRITE_SLRU_PAGE,  
+   WAIT_EVENT_SYNC_SLRU_FLUSH,  
+   WAIT_EVENT_SYNC_SLRU_WRITE_PAGE,  
+   /* Wait event for TIMELINE HISTORY */  
+   WAIT_EVENT_READ_TIMELINE_HISTORY_WALSENDER,  
+   WAIT_EVENT_READ_TIMELINE_HISTORY_WRITE,  
+   WAIT_EVENT_WRITE_TIMELINE_HISTORY,  
+   WAIT_EVENT_WRITE_TIMELINE_HISTORY_FILE,  
+   WAIT_EVENT_SYNC_TIMELINE_HISTORY_WRITE,  
+   WAIT_EVENT_SYNC_TIMELINE_HISTORY_FILE,  
+   /* Wait event for TWOPHASE FILE */  
+   WAIT_EVENT_READ_TWOPHASE_FILE,  
+   WAIT_EVENT_WRITE_RECREATE_TWOPHASE_FILE,  
+   WAIT_EVENT_SYNC_RECREATE_TWOPHASE_FILE,  
+   /* Wait event for SYSLOGGER */  
+   WAIT_EVENT_READ_SYSLOGGER_FILE,  
+   WAIT_EVENT_WRITE_SYSLOGGER_FILE,  
+   /* Wait event for REPLSLOT */  
+   WAIT_EVENT_READ_RESTORE_REPLSLOT,  
+   WAIT_EVENT_WRITE_REPLSLOT,  
+   WAIT_EVENT_SYNC_RESTORE_REPLSLOT,  
+   WAIT_EVENT_SYNC_SAVE_REPLSLOT,  
+   /* Wait event for copydir */  
+   WAIT_EVENT_READ_COPY_FILE,  
+   WAIT_EVENT_WRITE_COPY_FILE,  
+   /* Wait event RELMAP FILE */  
+   WAIT_EVENT_READ_LOAD_RELMAP_FILE,  
+   WAIT_EVENT_WRITE_RELMAP_FILE,  
+   WAIT_EVENT_SYNC_WRITE_RELMAP_FILE,  
+   /* Wait event for LOCK FILE */  
+   WAIT_EVENT_READ_CREATE_LOCK_FILE,  
+   WAIT_EVENT_READ_ADDTODATEDIR_LOCK_FILE,  
+   WAIT_EVENT_READ_RECHECKDATADIR_LOCK_FILE,  
+   WAIT_EVENT_WRITE_CREATE_LOCK_FILE,  
+   WAIT_EVENT_WRITE_ADDTODATEDIR_LOCK_FILE,  
+   WAIT_EVENT_SYNC_ADDTODATEDIR_LOCK_FILE,  
+   WAIT_EVENT_SYNC_CREATE_LOCK_FILE  
+} WaitEventIO;  

对于判断系统瓶颈,又多了一个有力信息。

这个patch的讨论,详见邮件组,本文末尾URL。

PostgreSQL社区的作风非常严谨,一个patch可能在邮件组中讨论几个月甚至几年,根据大家的意见反复的修正,patch合并到master已经非常成熟,所以PostgreSQL的稳定性也是远近闻名的。

参考

https://commitfest.postgresql.org/13/975/

https://www.postgresql.org/message-id/flat/CAGPqQf0LsYHXREPAZqYGVkDqHSyjf=KsD=k0GTVPAuzyThh-VQ@mail.gmail.com#CAGPqQf0LsYHXREPAZqYGVkDqHSyjf=KsD=k0GTVPAuzyThh-VQ@mail.gmail.com

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
监控 前端开发 存储
实时通信:企业员工监控管理软件中的Socket.io实现
在企业环境中,实时监控员工的工作状态和行为对于提高生产效率和确保数据安全至关重要。本文将介绍如何使用Socket.io实现企业员工监控管理软件中的实时通信功能,通过这种方式实现对员工的即时监控和数据收集。
385 0
|
存储 监控 关系型数据库
监控 PostgreSQL 的性能指标
监控 PostgreSQL 的性能指标
832 3
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL 关系型数据库 MySQL
PostgreSQL【异常 01】java.io.IOException:Tried to send an out-of-range integer as a 2-byte value 分析+解决
PostgreSQL【异常 01】java.io.IOException:Tried to send an out-of-range integer as a 2-byte value 分析+解决
1364 1
|
SQL 存储 弹性计算
2022云栖精选—云数据库RDS重磅功能发布与最佳实践
彭祥 阿里云数据库事业部资深技术专家 RDS产品部负责人 许鸿斌 阿里云数据库事业部高级产品专家
2022云栖精选—云数据库RDS重磅功能发布与最佳实践
|
关系型数据库 分布式数据库 数据库
沉浸式学习PostgreSQL|PolarDB 8: 电商|短视频|新闻|内容推荐业务(根据用户行为推荐相似内容)、监控预测报警系统(基于相似指标预判告警)、音视图文多媒体相似搜索、人脸|指纹识别|比对 - 向量搜索应用
1、在电商业务中, 用户浏览商品的行为会构成一组用户在某个时间段的特征, 这个特征可以用向量来表达(多维浮点数组), 同时商品、店铺也可以用向量来表达它的特征. 那么为了提升用户的浏览体验(快速找到用户想要购买的商品), 可以根据用户向量在商品和店铺向量中进行相似度匹配搜索. 按相似度来推荐商品和店铺给用户. 2、在短视频业务中, 用户浏览视频的行为, 构成了这个用户在某个时间段的兴趣特征, 这个特征可以用向量来表达(多维浮点数组), 同时短视频也可以用向量来表达它的特征. 那么为了提升用户的观感体验(推荐他想看的视频), 可以在短视频向量中进行与用户特征向量的相似度搜索.
680 0
QGS
|
监控 关系型数据库 Linux
zabbix5.0—agent2监控PostgreSQL-11.4(linux)
记zabbix5.0—agent2监控PostgreSQL-11.4(linux)
QGS
1047 0
zabbix5.0—agent2监控PostgreSQL-11.4(linux)
|
监控 关系型数据库 PostgreSQL
|
监控 固态存储 Ubuntu
linux 【监控io】iotop命令详解
linux 【监控io】iotop命令详解
linux 【监控io】iotop命令详解
|
缓存 监控 关系型数据库
[译]PostgreSQL16-新特性-新增IO统计视图:pg_stat_io
[译]PostgreSQL16-新特性-新增IO统计视图:pg_stat_io
631 0

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版
  • 推荐镜像

    更多