postgresql|数据库|pg_repack和idle_in_transaction_session_timeout参数的关系

news2024/11/22 17:06:28

一、问题描述

在使用pg_repack这个工具做数据库的表膨胀清理过程中,经常会遇到类似这样的警告:

这里的警告表明在膨胀治理的时候,此表遇到了事务阻塞,而此时我们有三种选择,第一个选择是等待该事务结束,第二个选择是主动结束该事务,第三个选择是利用pg数据库的自身机制自动结束该事务;只有事务阻塞的情况解决了,才能够顺利的完成表膨胀的治理

查询上面警告的进程,可以看到该进程的连接状态是idle in transaction

二、数据库进程和数据库连接状态

那么,在解决此问题前,先来了解一下数据库连接的几种状态。

pg_stat_activity

pg_stat_activity 是一张postgresql数据库内的系统视图,它的每一行都表示一个系统进程,显示与当前会话的活动进程的一些信息,比如当前会话的状态和查询等。

在平时查询pg_stat_activity这个视图的时候,每一行包含了一个进程的相关信息,包含当前正在执行的SQL,或者会话的状态等等,state字段表示当前进程的状态。

在PostgreSQL数据库里,其实代码里总共定义了7种BackendState,但是最终给我们展现在pg_stat_activity里显示的只有6种,这个不显示的STATE_UNDEFINED是PostgreSQL中定义的一个连接状态。它表示客户端连接到服务器,但服务器无法确定连接的状态,这里这个特殊的状态本文就不过多解读了,并不是本文的重点它的state字段表示当前进程的状态,一共有六种:

1、Active(活动): 进程正在执行某个语句,处于活跃状态
2、Idle(空闲): 进程正在等待客户端的指令
3、idle in transaction(事务空闲):进程开启了事务,但当前没有提交任何语句,这里的事务可以是查询语句,也可以是插入语句,总之,DML语句和DDL语句都可以
4、idle in transaction (aborted)(事务空闲-退出):进程开启了事务,但当前没有提交任何语句。并且事务中的一个语句报错退出。(一般整个事物回滚后的状态)
除了事务中声明一个错误外,其余情况与idle in transaction相同
5、fastpath function call(快速通道函数调用): 后台正在执行某个快速通道函数
6、Disabled(禁用): 如果后台禁用track_activities,则报告这个状态

这里主要介绍下idle in transaction,它是一种特殊的进程状态,也就是上面图片里的示例,它表示进程里的一个事务已经开始,但尚未完成。当一个事务处于idle in transaction状态时,它可以接受新的查询,但不能提交或回滚。这种状态通常是由于客户端应用程序在发送查询之后没有发送提交或回滚指令而导致的。可能在业务应用代码中忘记关闭已开启的事务,或者系统中存在僵死进程等。

idle in transaction进程过多的危害:

数据库里长时间存在idle in transaction状态的进程,会严重影响数据库的性能,因为它会阻止其他事务的执行,从而影响数据库的性能。此外,如果一个事务处于idle in transaction状态太长时间,它会阻止VACUUM进程回收空间,当然了,也会阻止pg_repack回收磁盘空间,进而造成表数据膨胀,会导致事务ID wraparound,甚至严重可能会占用大量的内存,从而导致数据库崩溃。

而数据库的一个比较重要的原则是 快进快出,该原则同样适用于vacuum,pg_repack 清理表膨胀的时候遇到事务阻塞的情况,也就是说,事务能够尽快开始并且尽快的结束是最好的情况

三、

手动清理长时间挂起的事务

第一个SQL语句是查询事务阻塞的进程pid,第二个SQL语句是结束查询到的进程pid

很明显的,手动清理阻塞事务是比较繁琐的,通常需要清理的pid很多,工作量很大,此种方式十分不推荐

SELECT pid, pg_stat_get_backend_activity(pid) AS query

FROM pg_stat_activity

WHERE state = 'idle in transaction';




SELECT pg_terminate_backend(pid)

FROM pg_stat_activity

WHERE state = 'idle in transaction' AND pid = <进程ID>;

将 <进程ID> 替换为你要终止的进程的实际 ID。这将终止与指定进程关联的数据库事务。

请注意,终止一个进程将导致未提交的事务回滚,并释放相关的资源。在执行此操作之前,请确保你了解可能带来的影响。

四、

postgresql数据库自动清理长时间挂起的事务

PostgreSQL 9.6版本开始支持了idle_in_transaction_session_timeout参数,也就是上面我们所说的第三种选择---自动查杀idle_in_transaction_session_timeout进程,这个参数可以自动查杀超过指定时间的 idle in transaction 空闲事务连接,用于清理应用代码中忘记关闭已开启的事务,或者系统中存在僵死进程等。(在postgresql数据库的主配置文件内修改此参数,默认是0,关闭状态)
 

那么,这个参数到底如何配置呢?该参数是毫秒,比如设置idle_in_transaction_session_timeout=20000 意思就是20秒以上idle_in_transaction_session状态的进程postgresql数据库会给你自动清理掉,🆗,如果你的数据库读写性能比较差,一个正常发起的事务一般都会超过20秒,那么,将此参数增大,比如增大到60000,也就是60秒就可以了。通常可以问开发,确认自己数据库的事务执行提交时间。

需要注意的是,修改idle_in_transaction_session_timeout参数只需要重载数据库配置文件(也就是在命令行执行 selec pg_reload_conf(); 这个函数),并不需要重启数据库服务,而且它不会影响idle状态的事物。

据观察,idle_in_transaction_session_timeout参数设置后,不管设置多少,至少pg_repack 在清理表膨胀的时候再也没有遇到因事务阻塞而需要等待的情况了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Excel里制作简单游戏界面

生成随机激活码 找工具箱 插入按钮 建宏 方法一&#xff1a;新建按钮的时候创建宏 方法二&#xff1a;右键->指定宏 VBA VBA代码界面 调整字体 VBA代码 Public str As String 存储激活码显示的字符 Public st As String 中间变量&#xff0c;用来替代随机数 Public ot…

[实践应用] 深度学习之激活函数

文章总览&#xff1a;YuanDaiMa2048博客文章总览 深度学习之激活函数 激活函数基本概念分类常见的激活函数2. Tanh/双曲正切激活函数3. ReLU激活函数4. Softmax激活函数 PyTorch中如何使用1. 线性激活函数2. 非线性激活函数SigmoidTanhReLULeaky ReLUParametric ReLU (PReLU) 使…

ThinkPHP Email功能如何配置才能发送邮件?

ThinkPHP Email发送流程&#xff1f;使用ThinkPHP发Email方法&#xff1f; ThinkPHP作为一款流行的PHP框架&#xff0c;提供了强大的Email功能&#xff0c;使得开发者能够轻松实现邮件发送。AokSend将详细介绍如何配置ThinkPHP Email功能&#xff0c;以确保邮件能够顺利发送。…

基于多种智能优化算法优化BP神经网络的数据时序预测

基于多种智能优化算法优化BP神经网络进行数据时序预测的研究&#xff0c;旨在通过引入多种优化算法来提高传统BP神经网络&#xff08;Backpropagation Neural Network&#xff09;的预测精度与泛化能力。 代码原理及流程 1. BP神经网络简介 BP神经网络是一种常见的前馈神经网…

别找了!包含gpt在内的国内可以使用的Ai网站都在这了【最新可用】

在当今人工智能迅速发展的时代&#xff0c;智能创作与对话平台为用户提供了多样化的功能支持。以下是一些国内代表性的GPT平台&#xff0c;涵盖了从个人到企业的广泛需求&#xff0c;您可以根据自己的需求灵活选择。我们还为您整理了这些平台的链接&#xff0c;方便直接体验。&…

谷歌对抗司法部:为什么谷歌的“数百个竞争对手”说法站不住脚

随着谷歌反垄断陪审团审判的进行&#xff0c;谷歌声称美国司法部对广告技术市场的看法狭隘&#xff0c;并且广告商和出版商有很多替代选择。然而&#xff0c;证据并不支持这一说法。 谷歌误导性地声称有“数百个竞争对手。” 虽然存在许多广告技术提供商&#xff0c;但谷歌在…

【Petri网导论学习笔记】Petri网导论入门学习(二)

Petri 网导论学习笔记&#xff08;二&#xff09; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&am…

如何进行DAP-seq的数据挖掘,筛选验证位点

从样本准备到寄送公司&#xff0c;每一天都在“祈祷”有个心仪的分析结果&#xff0c;终于在这天随着邮件提示音的响起&#xff0c;收到了分析结果...... 分析前工作 爱基在进行数据分析之前&#xff0c;会有两次质控报告反馈给老师们。第一个&#xff0c;基因组DNA的提取质控…

线上找工作求职招聘小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 在当今这个数字化时代&#xff0c;互联网已经渗透到我们生活的方方面面&#xff0c;其中就业市场也不例外。随着移动互联网的普及&#xff0c;线上找工作已成为许多求职者的首选方式。为了满足这一市场需求&#xff0c;我们精心打造了一款“线上找工作求职招聘小程序…

SpringMVC中的前置调用

这两天在看一个老项目&#xff0c;用的SpringMVCJSP。因为很久没看SpringMVC&#xff0c;在看一个Controller的时候竟然看不懂了哈哈哈哈~ Controller&#xff1a; Controller RequestMapping("example") FunctionId("F001") public class ExampleContro…

安全团队需要了解的六大最危险的新威胁

人工智能的崛起为网络安全带来了非凡的机遇和令人生畏的挑战。 虽然人工智能可以轻松识别和利用漏洞&#xff0c;但如果没有强大的安全措施&#xff0c;部署人工智能会带来重大风险。 随着技术的发展&#xff0c;许多组织优先考虑人工智能创新&#xff0c;却忽视了安全性&#…

《黑神话悟空》有情众生三十四难成就指南

在《黑神话悟空》的丰富世界中&#xff0c;解锁“有情众生三十四难”成就是一项颇具挑战性的任务。这个成就要求玩家完成一系列精细的支线任务&#xff0c;并在小雷音寺击败不白。以下是详细的成就解锁步骤&#xff0c;助你在这款动作角色扮演游戏中取得新的进展。 如果需要一个…

苹果手机铃声怎么设置自己的歌?3个方法自定义手机铃声

苹果手机内部的手机铃声库只有固定的几首铃声&#xff0c;且都是纯音乐&#xff0c;比较单调&#xff0c;并不是所有用户都喜欢这些铃声。那么&#xff0c;苹果手机铃声怎么设置自己的歌呢&#xff1f;小编这里有3个方法&#xff0c;可以教大家如何将手机铃声设置成自己喜欢的歌…

深度学习-目标检测(一)-R-CNN

目录 一&#xff1a;目标检测-Overfeat模型 1.滑动窗口 二&#xff1a;目标检测R-CNN模型 1.R-CNN结构 1.步骤&#xff08;以AlexNet网络为基准&#xff09; 2.候选区域 3.CropWarp 4.CNN网络提取特征 5.特征向量训练分类器SVM 三&#xff1a;R-CNN训练过程 1.训练…

DataLoader使用

文章目录 一、认识dataloader二、DataLoader整合数据集三、使用DataLoader展示图片方法四、去除结尾不满足batch_size设值图片的展示 一、认识dataloader DataLoader 用于封装数据集&#xff0c;并提供批量加载数据的迭代器。它支持自动打乱数据、多线程数据加载等功能。datas…

【网络安全】-文件上传漏洞实战-upload-labs(0~16)

准备&#xff1a; 一句话木马&#xff1a;<? php eval($_REQUEST[cmd]); ?)> 格式&#xff1a;写入txt文本重命名后缀问.php /.php 格式&#xff0c;看具体要求上传。 Pass-01: 显示页面源代码&#xff0c;发现是js对不合法文件进行检查,上传修改为.jpg的php文件直接…

孩子为什么会有自闭症?

自闭症&#xff0c;这个复杂而神秘的神经发展性障碍&#xff0c;长久以来一直困扰着无数家庭和专业人士。尽管其确切原因尚未被完全揭示&#xff0c;但多年的研究与实践已经为我们提供了多个可能的解释框架。 首先&#xff0c;遗传因素在自闭症的发病中扮演了重要角色。科学家发…

HTML5超酷炫的水果蔬菜在线商城网站源码系列模板1

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059238 HTML5超酷炫的水果蔬菜在线商城网…

五星级可视化页面(04):城市鸟瞰地图,恢宏大气。

今天继续分享五星级可视化大屏界面&#xff0c;本期分享城市3D鸟瞰图的&#xff0c;非常的恢宏大气。

101 个 React 技巧和窍门

在这篇文章中&#xff0c;我分享了我多年来学到的101个最佳提示和技巧。准备好了吗&#xff1f;让我们开始吧&#x1f4aa;&#xff01; 注意&#xff1a;本指南假定你对 React 有基本的了解&#xff0c;并了解术语 props、state、context 等。 类别 #1&#xff1a;组件组织 1…