首頁  >  文章  >  系統教程  >  DBA發現了PostgreSQL的新問題

DBA發現了PostgreSQL的新問題

WBOY
WBOY轉載
2024-01-13 09:06:11858瀏覽

DBA發現了PostgreSQL的新問題

#與往常一樣,升級或初始化一個新叢集的用戶將獲得更好的效能(例如,更好的平行索引掃描、合併join 和不相關的子查詢,更快的聚合、遠端伺服器上更加智能的join 和聚合),這些都開箱即用,但本文中我想講一些不能開箱即用,實際上你需要採取一些步驟才能從中獲益的內容。以下重點展示的功能是從 DBA 的角度來彙編的,很快也有一篇文章從開發者的角度講述更改。

升級注意事項

首先有些從現有設定升級的提示- 有一些小的事情會導致從9.6 或更舊的版本遷移時引起問題,所以在真正的升級之前,一定要在單獨的副本上測試升級,並遍歷發行說明中所有可能的問題。最值得注意的缺陷是:

所有包含 “xlog” 的函數都被重新命名為使用 “wal” 而不是 “xlog”。

後一個命名可能與正常的伺服器日誌混淆,因此這是一個「以防萬一」的變更。如果使用任何第三方備份/複製/HA 工具,請檢查它們是否為最新版本。

存放伺服器日誌(錯誤訊息/警告等)的 pg_log 資料夾已重新命名為 “log”。

確保驗證你的日誌解析或 grep 腳本(如果有)可以工作。

預設情況下,查詢將最多使用 2 個背景進程。

如果在CPU 數量較少的機器上在postgresql.conf 設定中使用預設值10,則可能會看到資源使用率峰值,因為預設並行處理已啟用- 這是一件好事,因為它應該意味著更快的查詢。如果需要舊的行為,請將 max_parallel_workers_per_gather 設為 0。

預設情況下,本機的複製連線已啟用。

為了簡化測試等工作,本機主機和本機 Unix 套接字複製連線現在在 pg_hba.conf 中以「信任trust」模式啟用(無密碼)!因此,如果其他非 DBA 使用者也可以存取真實的生產計算機,請確保更改配置。

從 DBA 的角度來看我的最愛

邏輯複製

這個期待已久的功能在你只想要複製一張單獨的表、部分錶或所有表時只需要簡單的設定而性能損失最小,這也意味著之後主要版本可以零停機升級!歷史上(需要 Postgres 9.4 ),這可以透過使用第三方擴展或緩慢的基於觸發器的解決方案來實現。對我而言這是 10 最好的功能。

宣告分區

以前管理分割區的方法透過繼承並創建觸發器來把插入操作重新路由到正確的表中,這一點很煩人,更不用說效能的影響了。目前支援的是 “range” 和 “list” 分區方案。如果有人在某些資料庫引擎中缺少 “哈希” 分區,則可以使用帶有表達式的 “list” 分區來實現相同的功能。

可用的哈希索引

哈希索引現在是 WAL 記錄的,因此是崩潰安全的,並獲得了一些性能改進,對於簡單的搜索,它們比在更大的數據上的標準 B 樹索引快。也支援更大的索引大小。

跨列優化器統計

這樣的統計數據需要在一組表的列上手動創建,以指出這些值實際上是以某種方式相互依賴的。這將能夠應對計劃器認為返回的數據很少(機率的乘積通常會產生非常小的數字)從而導致在大量數據下性能不好的的慢查詢問題(例如選擇“嵌套循環” join)。

副本上的平行快照

現在可以在 pg_dump 中使用多個進程(-jobs 標誌)來大幅加快備用伺服器上的備份。

更好地調整平行處理 worker 的行為

參考 max_parallel_workers 和 min_parallel_table_scan_size/min_parallel_index_scan_size 參數。我建議增加一點後兩者的預設值(8MB、512KB)。

新的內建監控角色,方便工具使用

新的角色 pg_monitor、pg_read_all_settings、pg_read_all_stats 和 pg_stat_scan_tables 能更容易進行各種監控任務 - 以前必須使用超級使用者帳戶或一些 SECURITY DEFINER 包裝函數。

用於更安全的副本產生的臨時 (每個會話) 複製槽

用於檢查 B 樹索引的有效性的一個新的 Contrib 擴展

這兩個智慧檢查發現結構不一致和頁面層級校驗未涵蓋的內容。希望不久的將來能更深入。

Psql 查詢工具現在支援基本分支(if/elif/else)

例如下面的將啟用具有特定版本分支(對 pg_stat* 視圖等有不同列名)的單一維護/監視腳本,而不是許多版本特定的腳本。

SELECT :VERSION_NAME = '10.0' AS is_v10 \gset
\if :is_v10
SELECT 'yippee' AS msg;
\else
SELECT 'time to upgrade!' AS msg;
\endif

這次就這樣了!當然有很多其他的東西沒有列出,所以對於專職 DBA,我一定會建議你更全面地看發布記錄。非常感謝那 300 多為這個版本做出貢獻的人!

以上是DBA發現了PostgreSQL的新問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除