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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!
410 26
|
自然语言处理 关系型数据库 MySQL
mysql 全文搜索功能优缺点
mysql 全文搜索功能优缺点
|
存储 关系型数据库 MySQL
MySQL细节优化:关闭大小写敏感功能的方法。
通过这种方法,你就可以成功关闭 MySQL 的大小写敏感功能,让你的数据库操作更加便捷。
1344 19
|
关系型数据库 MySQL 数据库
|
存储 关系型数据库 MySQL
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
本文介绍了一个基于Python Django框架开发的医院管理系统,该系统设计了管理员、用户和医生三个角色,具备多用户功能,并使用MySQL数据库进行数据存储和管理。
801 4
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
|
JavaScript 关系型数据库 MySQL
node连接mysql,并实现增删改查功能
【8月更文挑战第26天】node连接mysql,并实现增删改查功能
817 3
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如何实现类似mysql实例中的数据库功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
323 8
|
SQL 关系型数据库 MySQL
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
594 0
|
关系型数据库 MySQL 存储

相关产品

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

    更多