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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

在Linux上使用Docker可以提高開發和部署效率。 1.安裝Docker:使用腳本在Ubuntu上安裝Docker。 2.驗證安裝:運行sudodockerrunhello-world。 3.基本用法:創建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。 4.高級用法:創建自定義鏡像,使用Dockerfile構建並運行。 5.優化與最佳實踐:使用多階段構建和DockerCompose,遵循編寫Dockerfile的最佳實踐。

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

啟動 Apache 的步驟如下:安裝 Apache(命令:sudo apt-get install apache2 或從官網下載)啟動 Apache(Linux:sudo systemctl start apache2;Windows:右鍵“Apache2.4”服務並選擇“啟動”)檢查是否已啟動(Linux:sudo systemctl status apache2;Windows:查看服務管理器中“Apache2.4”服務的狀態)啟用開機自動啟動(可選,Linux:sudo systemctl

啟動 Oracle 監聽器的步驟如下:檢查監聽器狀態(使用 lsnrctl status 命令)對於 Windows,在 Oracle Services Manager 中啟動 "TNS Listener" 服務對於 Linux 和 Unix,使用 lsnrctl start 命令啟動監聽器運行 lsnrctl status 命令驗證監聽器是否已啟動

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

本文介紹兩種在Debian系統中配置回收站的方法:圖形界面和命令行。方法一:使用Nautilus圖形界面打開文件管理器:在桌面或應用程序菜單中找到並啟動Nautilus文件管理器(通常名為“文件”)。找到回收站:在左側導航欄中尋找“回收站”文件夾。如果找不到,請嘗試點擊“其他位置”或“計算機”進行搜索。配置回收站屬性:右鍵點擊“回收站”,選擇“屬性”。在屬性窗口中,您可以調整以下設置:最大大小:限制回收站可用的磁盤空間。保留時間:設置文件在回收站中自動刪除前的保

在Debian系統中,readdir系統調用用於讀取目錄內容。如果其性能表現不佳,可嘗試以下優化策略:精簡目錄文件數量:盡可能將大型目錄拆分成多個小型目錄,降低每次readdir調用處理的項目數量。啟用目錄內容緩存:構建緩存機制,定期或在目錄內容變更時更新緩存,減少對readdir的頻繁調用。內存緩存(如Memcached或Redis)或本地緩存(如文件或數據庫)均可考慮。採用高效數據結構:如果自行實現目錄遍歷,選擇更高效的數據結構(例如哈希表而非線性搜索)存儲和訪問目錄信
