idle in transaction 怎么处理
答案:1 悬赏:40 手机版
解决时间 2021-02-23 02:36
- 提问者网友:伴风望海
- 2021-02-22 16:47
idle in transaction 怎么处理
最佳答案
- 五星知识达人网友:蕴藏春秋
- 2021-02-22 17:29
引发 idle in transaction 的原因很多,例如应用代码中忘记关闭已开启的事务,或者系统中存在僵死进程等,曾经看到过某个库中的 idle in transaction 进程存在一年有余,这类进程严重危害了数据库的安全,例如它会阻止 VACUUM 进程回收记录,造成表数据膨胀,同时它有可能引起整个 PostgreSQL 数据库 Transaction ID Wraparound 的风险。
--修改 postgresql.conf 以下参数
idle_in_transaction_session_timeout = 20000
备注:参数单位为毫秒,这里设置 idle in transaction 超时空闲事务时间为 20 秒。
--重载配置文件
[pg96@db1 pg_root]$ pg_ctl reload
server signaled
备注:此参数修改后对当前连接依然生效,应用不需要重连即能生效。
--开启会话一:模拟一个事务
[pg96@db1 ~]$ psql francs francs
psql (9.6beta1)
Type "help" for help.
francs=> begin;
BEGIN
francs=> select 1;
?column?
----------
1
(1 row)
事务中,不提交也不回滚。
--修改 postgresql.conf 以下参数
idle_in_transaction_session_timeout = 20000
备注:参数单位为毫秒,这里设置 idle in transaction 超时空闲事务时间为 20 秒。
--重载配置文件
[pg96@db1 pg_root]$ pg_ctl reload
server signaled
备注:此参数修改后对当前连接依然生效,应用不需要重连即能生效。
--开启会话一:模拟一个事务
[pg96@db1 ~]$ psql francs francs
psql (9.6beta1)
Type "help" for help.
francs=> begin;
BEGIN
francs=> select 1;
?column?
----------
1
(1 row)
事务中,不提交也不回滚。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯