在適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中設定伺服器參數
適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
您可以列出、顯示及更新 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的組態參數。
參數自訂
您可以使用各種方法和層級,根據自己的特定需求來自訂參數。
全域層級
若要檢視伺服器參數的目前設定值,或在實例或伺服器層級全域變更它們,您可以使用 Azure 入口網站 中的 [伺服器參數] 頁面。 您也可以使用 CLI、REST API、Azure Resource Manager 範本或第三方 IaC 工具,全域與伺服器參數互動。
注意
由於適用於 PostgreSQL 的 Azure 資料庫是受控資料庫服務,因此,使用者不具主機或作業系統存取權可檢視或修改 postgresql.conf 等設定檔。 系統會根據您所做的參數變更,自動更新檔案的內容。
在此相同文章中,您可以找到區段,以全域方式與伺服器參數互動,以:
細微層級
您可以在更細微的層級調整參數。 這些調整會覆寫全域設定的值。 其範圍和持續期間取決於您進行調整的層級:
資料庫層級:針對資料庫特定的設定使用 ALTER DATABASE
命令。
角色或使用者層級:使用 ALTER USER
命令,進行使用者為中心的設定。
函式、程式層級:當您定義函式或程式時,您可以指定或改變呼叫函式時所使用的組態參數。
資料表層級:例如,您可以修改與在此層級進行自動資料清理相關的參數。
會話層級:對於個別資料庫會話的存限,您可以調整特定參數。 PostgreSQL 使用下列 SQL 命令來協助進行此調整:
- 使用
SET
命令,進行工作階段特定的調整。 這些變更可在目前工作階段期間用來作為預設設定。 存取這些變更可能需要特定的 SET
權限,而且先前所述之可修改和唯讀參數的限制不適用。 對應的 SQL 函式為 set_config(setting_name, new_value, is_local)
。
- 使用
SHOW
命令來檢查現有的參數設定。 其 SQL 函式對等項目為 current_setting(setting_name text)
。
列出所有伺服器參數
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段下,選取 [伺服器參數]。 此頁面會顯示參數清單、其設定的值、選擇性單位、只讀/動態/靜態,以及其描述。
選取或暫留在 i (資訊) 圖示上,以查看每個參數可以設定為的允許值。 根據參數的數據類型,它可以是字串、列舉、整數、布爾值、數值、設定,允許的值會有所不同。 它可以是正則表達式、值清單、整數範圍、開/關、小數範圍、值清單。
實例所支援的伺服器參數清單包含數百個專案,每個專案會以20個專案的頁面呈現。 在頁面底部,有一個控件可通知您所在的位置。 還有一個分頁控件,可用來巡覽整組頁面。
如有需要,請使用 [ 搜尋] 篩選專案... 文字框,將清單縮小到名稱或描述中包含搜尋字詞的參數。
[ 參數類型 ] 資料行可以針對每個參數顯示下列任何值:
參數類型 |
描述 |
靜態 |
需要重新啟動伺服器,才能使變更生效。 |
動態 |
不需要重新啟動伺服器實例,即可加以改變。 不過,變更將只會套用至修改之後建立的新連線。 |
唯讀 |
用戶無法設定,因為它們在維護服務的可靠性、安全性或其他作業層面方面扮演了重要角色。 |
您可以透過 az postgres flexible-server parameter list 命令列出伺服器中的所有伺服器參數。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server>
每個參數都有下列屬性:
Attribute name |
描述 |
可能值 |
allowedValues |
描述參數允許的值。 |
根據 dataType 的值,可以是正則表示式(字串)、值清單(列舉)、整數範圍(整數)、開/關(布爾值)、小數點範圍(數值)、值清單(set)。 |
dataType |
參數所使用的數據類型。 |
可以是 、enumeration 、、、integer numeric 、set 、 string 的任何 。boolean |
defaultValue |
部署新伺服器時指派給 參數的值。 |
視參數的數據類型和允許的值而有所不同。 |
description |
參數控件的簡短說明。 |
每個參數不同的文字描述。 |
documentationLink |
指向 參數檔之頁面的 URL 位址。 |
某種形式的 URL。 |
id |
唯一參考此彈性伺服器實例中的伺服器參數的資源標識符。 |
遵循模式 /subscriptions/<subscription_identifier>/resourceGroups/<resource_group_name>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<server_name>/configurations/<parameter_name> 的字串。 |
isConfigPendingRestart |
指出值屬性中目前設定的值是否需要伺服器重新啟動才會生效。 |
true :對於值已變更的參數,而且因為其不是動態參數(也就是它們是靜態的),因此需要重新啟動伺服器,變更才會生效。 false :對於目前在 value 屬性中設定之值作用中的參數,且不會等候伺服器重新啟動生效。 |
isDynamicConfig |
指出指派給 參數的值變更不需要或要求伺服器重新啟動,變更才會生效。 |
true :對於參數,當其值變更時,變更會立即生效。 false :對於參數,當其值變更時,需要伺服器重新啟動,變更才會生效。 |
isReadOnly |
指出為參數指派的預設值是否可以或無法由使用者覆寫。 |
true :針對指定為唯讀且使用者無法變更的參數。 false :針對指定為讀寫的參數,而且用戶可以設定為與預設值不同的值。 |
name |
參數的名稱。 |
伺服器參數的任何有效名稱。 |
resourceGroup |
部署伺服器的資源群組名稱。 |
Azure 中資源群組的任何有效名稱。 |
source |
目前為參數設定值的來源。 |
system-default 或 user-override ,取決於 值 是設定為系統預設值,還是使用者覆寫它。 |
單位 |
描述參數表示單位的選擇性文字。 |
當設定為某個專案時,它可以是任何 8KB 、bytes 、days 、KB microseconds milliseconds megabytes 、、、 percentage seconds minutes |
value |
目前指派給 參數的值。 |
視參數的數據類型和允許的值而有所不同。 |
列出已修改預設值的伺服器參數
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段底下,選取 [伺服器參數],然後選取 [修改過的] 索引標籤。此頁面會顯示參數清單,其目前設定的值偏離預設值。
您可以透過 az postgres flexible-server 參數清單 命令,列出其值從預設值修改的所有伺服器參數。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?value!=defaultValue && isReadOnly==\`false\` && name!='temp_tablespaces' && name!='vacuum_cost_page_miss'] | [].name"
注意
先前的 CLI 命令不會考慮修改的伺服器參數,這些參數會指定為唯讀,temp_tablespaces
且遵循與 Azure 入口網站 中的 [伺服器參數] 頁面完全相同的準則vacuum_cost_page_miss
。
列出讀寫靜態伺服器參數
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段底下,選取 [伺服器參數],然後選取 [靜態] 索引標籤。此頁面會顯示讀寫參數清單,如果變更其值,則需要重新啟動伺服器,新值才會生效。
您可以透過 az postgres flexible-server 參數 list 命令,列出在變更值變更之後需要重新啟動的所有伺服器參數,讓變更生效。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isDynamicConfig==\`false\` && isReadOnly==\`false\`] | [].name"
列出讀寫動態伺服器參數
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段底下,選取 [伺服器參數],然後選取 [動態] 索引標籤。此頁面會顯示讀寫參數清單,如果變更其值,則需要重新啟動伺服器,新值才會生效。
您可以透過 az postgres flexible-server 參數 list 命令,列出變更變更生效之後,不需要重新啟動的所有伺服器參數。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isDynamicConfig==\`true\` && isReadOnly==\`false\`] | [].name"
列出唯讀伺服器參數
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段底下,選取 [伺服器參數],然後選取 [只讀] 索引標籤。此頁面會顯示唯讀參數的清單。
您可以透過 az postgres flexible-server parameter list 命令,列出指定為只讀的所有伺服器參數,用戶無法變更其值。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isReadOnly==\`true\`] | [].name"
設定一或多個伺服器參數的值
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段下,選取 [伺服器參數]。
找出您要變更的目前值、將其設定為新的所需值、注意資訊訊息指出尚未儲存多少伺服器參數變更,然後選取 [儲存]。
如果任何參數的 Parameter 類型都等於 Static,伺服器需要重新啟動,變更才會生效。 在此情況下,對話框隨即出現,因此您可以視需要選取:
- 儲存並重新啟動:如果您想要保存所有已修改其值的參數所做的所有變更,並在重新啟動伺服器之後立即對靜態參數進行任何變更才會生效。
- 僅儲存:如果您想要保存所有已變更其設定值的參數所做的所有變更,但想要延遲伺服器重新啟動至稍後的時間。 在您未完成伺服器重新啟動動作之前,對任何靜態伺服器參數所做的變更不會生效。
- 取消:尚未實作任何變更。
您可以透過 az postgres flexible-server parameter set 命令來設定伺服器參數的值。
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --source user-override --name <parameter> --value <value>
而且您可以使用下列腳本來有條件地重新啟動伺服器,如果變更的任何參數都需要重新啟動,變更才會生效:
parameters_requiring_restart=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isConfigPendingRestart==\`true\`] | length(@)")
if [ "$parameters_requiring_restart" -gt 0 ]; then
az postgres flexible-server restart --resource-group <resource_group> --name <server>
fi
將一個伺服器參數還原為其預設值
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段下,選取 [伺服器參數]。
找出您要還原為預設值的目前值讀寫參數,選取 Scree 右側的省略號,然後選取 [ 重設為預設值]。
重要
針對指定為只讀的參數,選取省略號不會快顯 [ 重設為預設 功能表] 選項。
如果您嘗試重設為預設值的參數參數類型數據行等於 Static,伺服器需要重新啟動,變更才會生效。 在此情況下,對話框隨即出現,因此您可以視需要選取:
- 儲存並重新啟動:如果您想要保存所有已修改其值的參數所做的所有變更,並在重新啟動伺服器之後立即對靜態參數進行任何變更才會生效。
- 僅儲存:如果您想要保存所有已變更其設定值的參數所做的所有變更,但想要延遲伺服器重新啟動至稍後的時間。 在您未完成伺服器重新啟動動作之前,對任何靜態伺服器參數所做的變更不會生效。
- 取消:尚未實作任何變更。
您可以透過 az postgres flexible-server 參數 set 命令,將伺服器參數的值還原為預設值。
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --source user-override --name <parameter> --value $(az postgres flexible-server parameter show --resource-group <resource_group> --server-name <server> --name <parameter> --output tsv)
而且您可以使用下列腳本來有條件地重新啟動伺服器,如果參數變更需要重新啟動,變更才會生效:
parameters_requiring_restart=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isConfigPendingRestart==\`true\`] | length(@)")
if [ "$parameters_requiring_restart" -gt 0 ]; then
az postgres flexible-server restart --resource-group <resource_group> --name <server>
fi
將所有伺服器參數還原為預設值
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
在資源功能表中的 [設定] 區段下,選取 [伺服器參數]。
選取 [ 全部重設為預設值]。
如果如果目前值不符合其預設值的任何參數,則數據行 Parameter 類型 等於 Static,伺服器需要重新啟動,變更才會生效。 在此情況下,對話框隨即出現,因此您可以視需要選取:
- 儲存並重新啟動:如果您想要保存所有已修改其值的參數所做的所有變更,並在重新啟動伺服器之後立即對靜態參數進行任何變更才會生效。
- 僅儲存:如果您想要保存所有已變更其設定值的參數所做的所有變更,但想要延遲伺服器重新啟動至稍後的時間。 在您未完成伺服器重新啟動動作之前,對任何靜態伺服器參數所做的變更不會生效。
- 取消:尚未實作任何變更。
您可以透過 az postgres flexible-server 參數 set 命令,將所有讀寫伺服器參數的值還原為其預設值。
parameters_to_reset=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?value!=defaultValue && isReadOnly==\`false\`].name" -o tsv)
for parameter_to_reset in $parameters_to_reset; do
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --name $parameter_to_reset --value $(az postgres flexible-server parameter show --resource-group <resource_group> --server-name <server> --name $parameter_to_reset --output tsv)
done
而且您可以使用下列腳本來有條件地重新啟動伺服器,如果任何參數變更需要重新啟動,變更才會生效:
parameters_requiring_restart=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isConfigPendingRestart==\`true\`] | length(@)")
if [ "$parameters_requiring_restart" -gt 0 ]; then
az postgres flexible-server restart --resource-group <resource_group> --name <server>
fi
使用時區參數
如果您打算在 PostgreSQL 中使用日期和時間數據,請確定您已為位置設定正確的時區。 所有時區感知日期和時間都會以UTC在PostgreSQL內部儲存。 它們會先轉換成 TimeZone 伺服器參數所指定的區域中的當地時間,再顯示給用戶端。 您可以在 [伺服器參數] 頁面上編輯此參數。
PostgreSQL 可讓您以三種不同的形式指定時區:
完整時區名稱,例如美國/New_York。 辨識的時區名稱會列在pg_timezone_names檢視中。
在 psql 中查詢此檢視並取得時區名稱清單的範例:
select name FROM pg_timezone_names LIMIT 20;
您應該會看到結果集,例如:
name
-----------------------
GMT0
Iceland
Factory
NZ-CHAT
America/Panama
America/Fort_Nelson
America/Pangnirtung
America/Belem
America/Coral_Harbour
America/Guayaquil
America/Marigot
America/Barbados
America/Porto_Velho
America/Bogota
America/Menominee
America/Martinique
America/Asuncion
America/Toronto
America/Tortola
America/Managua
(20 rows)
時區縮寫,例如 PST。 這類規格只會定義與UTC的特定位移,與完整的時區名稱相反,這可能也意味著一組日光節約轉換日期規則。 辨識的縮寫會列在 pg_timezone_abbrevs 檢視範例中,以 psql 查詢此檢視,並取得時區縮寫清單:
select abbrev from pg_timezone_abbrevs limit 20;
您應該會看到結果集,例如:
abbrev|
------+
ACDT |
ACSST |
ACST |
ACT |
ACWST |
ADT |
AEDT |
AESST |
AEST |
AFT |
AKDT |
AKST |
ALMST |
ALMT |
AMST |
AMT |
ANAST |
ANAT |
ARST |
ART |
除了時區名稱和縮寫之外,PostgreSQL 還接受 STDoffset 或 STDoffsetDST 格式的 POSIX 樣式時區規格,其中 STD 是區域縮寫,offset 是 UTC 以西小時為單位的數值位移,而 DST 是選擇性的日光節約區縮寫,假設在指定位移前一小時。
與 適用於 PostgreSQL 的 Azure 資料庫 產品小組分享您的建議和錯誤。
相關內容