資料庫PostrageSQL 鎖管理

2021-10-10 12:10:29 字數 1355 閱讀 7926

deadlock_timeout (integer)

這是進行死鎖檢測之前在乙個鎖上等待的總時間(以毫秒計)。死鎖檢測相對昂貴,因此伺服器不會在每次等待鎖時都執行這個它。我們樂觀地假設在生產應用中死鎖是不常出現的,並且只在開始檢測死鎖之前等待一會兒。增加這個值就減少了浪費在無用的死鎖檢測上的時間,但是減慢了報告真正死鎖錯誤的速度。預設是 1 秒(1s),這可能是實際中你想要的最小值。在乙個高負載的伺服器上,你可能需要增大它。這個值的理想設定應該超過你通常的事務時間,這樣就可以減少在鎖釋放之前就開始死鎖檢查的機會。只有超級使用者可以更改這個設定。

log_lock_waits被設定時,這個引數還可以決定發出關於鎖等待的日誌之前等待的時長。如果你想調查鎖延遲,你可能希望設定乙個比正常的deadlock_timeout小的值。

max_locks_per_transaction (integer)

共享鎖表跟蹤在max_locks_per_transaction * (max_connections + max_prepared_transactions)個物件(如表)上的鎖。因此,在任何乙個時刻,只有不超過這麼多個可區分物件能夠被鎖住。這個引數控制為每個事務分配的物件鎖的平均數量。個體事務可以鎖住更多物件,數量可以和鎖表中能容納的所有事務的鎖一樣多。這不是能被鎖住的行數,那個值是沒有限制的。預設值 64 已經被歷史證明是足夠的,但是如果

你有需要在乙個事務中使用很多不同表的查詢(例如查詢乙個有很多子表的父表),你可能需要提高這個值。這個引數只能在伺服器啟動時設定。

當執行乙個後備伺服器時,你必須設定這個引數為大於等於主伺服器上的值。否則,後備伺服器上將不允許查詢。

max_pred_locks_per_transaction (integer)max_pred_locks_per_relation (integer)

這個引數控制在謂詞鎖被提公升為覆蓋整個關係之前,該謂詞鎖能夠在單個關係上鎖住多少頁面或元組。大於等於零的值表示一種絕對限制,而負值表示用max_pred_locks_per_transaction除以這個設定的絕對值。預設值為-2,它將保持以往版本的postgresql中的行為。這個引數只能在postgresql.conf檔案中或者伺服器命令列上設定。

max_pred_locks_per_page (integer)

這個引數控制在謂詞鎖被提公升為覆蓋整個頁面之前,該謂詞鎖能在單一頁面上鎖住多少行。預設值是2。這個引數只能在postgresql.conf檔案中或者伺服器命令列上設定。

資料庫PostrageSQL 架構

邏輯複製從拷貝發布者資料庫上的資料庫快照開始。拷貝一旦完成,發布者上的更改會在它們發生時實時傳送給訂閱者。訂閱者按照資料在發布者上被提交的順序應用資料,這樣任意單一訂閱中的publication的事務一致性才能得到保證。訂閱者資料庫上的應用程序總是將session replication role設...

資料庫PostrageSQL 啟動資料庫伺服器

在任何人可以訪問資料庫前,你必須啟動資料庫伺服器。資料庫伺服器程式是postgres,它必須知道在 能找到它要用的資料。這是用 d選項實現的。因此,啟動伺服器最簡單的方法是 postgres d usr local pgsql data這將把伺服器放在前台執行。這個步驟同樣必須以postgresql...

資料庫PostrageSQL 預置選項

下列 引數 是唯讀的,它們是在編譯或安裝postgresql時決定的。同樣,它們被排除在postgresql.conf檔案例子之外。這些選項報告特定應用可能感興趣的多種postgresql行為,特別是管理前端相關的行為。block size integer 報告乙個磁碟塊的大小。它由編譯伺服器時bl...