- 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.
- 數據展現的藝術
- Visualforce Development Cookbook(Second Edition)
- 中文版Photoshop CS5數碼照片處理完全自學一本通
- Hands-On Machine Learning on Google Cloud Platform
- Apache Hive Essentials
- Multimedia Programming with Pure Data
- Maya極速引擎:材質篇
- 大數據驅動的設備健康預測及維護決策優化
- PostgreSQL 10 Administration Cookbook
- 單片機C語言應用100例
- Visual FoxPro程序設計
- 深度學習與目標檢測
- Extending Ansible
- R Machine Learning Projects
- C++程序設計基礎(上)