- Mastering PostgreSQL 9.6
- Hans Jurgen Schonig
- 175字
- 2021-07-09 19:57:09
Killing idle sessions
In PostgreSQL, a session or a transaction can basically live almost forever. In some cases, this has been a problem because transactions were kept open for too long. Usually, this was due to a bug. The trouble is this: insanely long transactions can cause cleanup problems and table bloat can occur. The uncontrolled growth of a table (table bloat) naturally leads to performance problems and unhappy end users.
Starting with PostgreSQL 9.6, it is possible to limit the duration a database connection is allowed to spend inside a transaction without performing real work. Here is how it works:
test=# SET idle_in_transaction_session_timeout TO 2500;
SET
test=# BEGIN;
BEGIN
test=# SELECT 1;
?column?
----------
1
(1 row)
test=# SELECT 1;
FATAL: terminating connection due to idle-in-transaction timeout
Administrators and developers can set a timeout, which is 2.5 seconds in my example. As soon as a transaction is idle for too long, the connection will be terminated automatically by the server. Nasty side effects of long idle transactions can be prevented easily by adjusting this parameter.
- Java編程全能詞典
- Ansible Configuration Management
- 基于LabWindows/CVI的虛擬儀器設計與應用
- Mastering VMware vSphere 6.5
- Mobile DevOps
- AWS Administration Cookbook
- Ruby on Rails敏捷開發最佳實踐
- Salesforce for Beginners
- Working with Linux:Quick Hacks for the Command Line
- 在實戰中成長:C++開發之路
- 所羅門的密碼
- JRuby語言實戰技術
- Mastering OpenStack(Second Edition)
- Java組件設計
- 機器人制作入門(第4版)