PostgreSQL參數—deadlock_timeout
PostgreSQL參數—deadlock_timeout
參數說明
postgres=# show deadlock_timeout;
deadlock_timeout
------------------
1s
(1 row)
postgres=# \x
Expanded display is on.
postgres=# select * from pg_settings where name = 'recovery_target_timeline';
-[ RECORD 1 ]---+----------------------------------------
name | recovery_target_timeline
setting | latest
unit |
category | Write-Ahead Log / Recovery Target
short_desc | Specifies the timeline to recover into.
extra_desc |
context | postmaster
vartype | string
source | default
min_val |
max_val |
enumvals |
boot_val | latest
reset_val | latest
sourcefile |
sourceline |
pending_restart | f
postgres=#
參數變更
此參數只能在服務器啟動時應用,因此任何更改都需要重新啟動服務器。這些設置的值通常存儲在postgresql.conf文件中,或在啟動服務器時通過命令行傳遞。
postgres=# show deadlock_timeout;
deadlock_timeout
------------------
1s
(1 row)
postgres=# alter system set deadlock_timeout=2;
ALTER SYSTEM
postgres=# show deadlock_timeout;
deadlock_timeout
------------------
1s
(1 row)
postgres=# exit
[postgres@lyp ~]$ pg_ctl restart
waiting for server to shut down....... done
server stopped
waiting for server to start....2022-02-25 23:26:32.660 CST [9286] LOG: redirecting log output to logging collector process
2022-02-25 23:26:32.660 CST [9286] HINT: Future log output will appear in directory "log".
done
server started
[postgres@lyp ~]$ psql
psql (14.1)
Type "help" for help.
postgres=# show deadlock_timeout;
deadlock_timeout
------------------
2ms
(1 row)
postgres=#
參數含義
deadlock_timeout (integer)
這是在檢查是否存在死鎖條件之前等待鎖的時間。死鎖檢查相對昂貴,因此服務器不會在每次等待鎖時都運行它。我們樂觀地假設死鎖在生產應用程序中并不常見,只需在鎖上等待一段時間,然后再檢查死鎖。增加此值可減少不必要的死鎖檢查所浪費的時間,但會減慢真正死鎖錯誤的報告速度。如果指定此值沒有單位,則以毫秒為單位。默認值為一秒 (1s),這可能是在實踐中想要的最小值。在負載很重的服務器上,您可能需要提升它。理想情況下,該設置應該超過您的典型事務時間,以提高在服務員決定檢查死鎖之前釋放鎖的幾率。只有超級用戶可以更改此設置。
當log_lock_waits被設置時,這個參數還可以決定發出關于鎖等待的日志之前等待的時間量。如果你想分析鎖延遲,你可以設置一個比正常的deadlock_timeout小的值。
「喜歡這篇文章,您的關注和贊賞是給作者最好的鼓勵」
關注作者
【版權聲明】本文為墨天輪用戶原創內容,轉載時必須標注文章的來源(墨天輪),文章鏈接,文章作者等基本信息,否則作者和墨天輪有權追究責任。如果您發現墨天輪中有涉嫌抄襲或者侵權的內容,歡迎發送郵件至:contact@modb.pro進行舉報,并提供相關證據,一經查實,墨天輪將立刻刪除相關內容。




