關于如何在PostgreSQL中調整數據庫參數和配置的綜合指南

關于如何在PostgreSQL中調整數據庫參數和配置的綜合指南

PostgreSQL是一個非常通用的數據庫系統,能夠在低資源環境和與各種其他應用程序共享的環境中高效運行。為了確保它將在許多不同的環境中正常運行,默認配置非常保守,不太適合高性能生產數據庫。加上地理空間數據庫具有不同使用模式的事實,數據往往由比非地理空間數據庫更少、更大的記錄組成,您可以看到默認配置不會完全適合我們的目的。

我想我們可以同意,每個人都想要一個快速的數據庫。問題是:在哪些方面快速?

在數據庫方面,“快”至少有兩個不同的方向:

  • 每秒的事務數
  • 吞吐量或數據處理量

這些是相互關聯的,但絕對不一樣。兩者在I/O方面的要求完全不同。一般來說,您希望不惜一切代價避免I/O。這是因為與訪問內存中的數據、不同級別的CPU緩存甚至CPU寄存器相比,I/O總是很慢。根據經驗,每一層都會減慢大約1:1000的訪問速度。

對于每秒大量事務的高需求系統,您需要盡可能多的并發IO。對于具有高吞吐量的系統,您需要一個每秒可以交付盡可能多字節的IO子系統。

這導致需要在CPU附近擁有盡可能多的數據——例如,在RAM中。至少工作集,即在可接受的時間內給出答案所需的數據集,應該合適。

每個數據庫引擎都有一個特定的內存布局,并為不同的目的處理不同的內存區域。

總結一下:我們需要避免IO,我們需要調整內存布局的大小,以便數據庫能夠有效地工作(并且,我假設所有其他任務都是根據正確的模式設計完成的)。

所有這些配置參數都可以在postgresql. conf數據庫配置文件中進行編輯。這是一個常規文本文件,可以使用記事本或任何其他文本編輯器進行編輯。在服務器重新啟動之前,更改不會生效。

注意:這些值僅為建議值。每個環境都會有所不同,需要進行測試以確定最佳配置。但是這一部分應該會讓你有一個好的開始。

數據庫參數

以下是一些參數,可以根據您的系統和工作負載進行調整以獲得最佳性能。

shared_buffer

PostgreSQL緩沖區稱為shared_buffer,是大多數操作系統中最有效的可調參數,該參數設置PostgreSQL將為緩存使用多少專用內存。

shared_buffer的默認值設置得很低,你不會從中得到多少好處。它設置得很低是因為某些機器和操作系統不支持更高的值。但是在大多數現代機器中,你需要增加這個值以獲得最佳性能。

如果您有一個1GB或更大內存的專用數據庫服務器,shared_buffers的合理起始值是系統內存的25%。您應該嘗試一些較低和較高的值,因為在某些情況下,要獲得最佳性能,您需要超過25%的設置。Windows系統上shared_buffers的有用范圍通常從64MB到512MB。配置取決于您的機器、工作數據集和機器上的工作負載。

在生產環境中,可以觀察到shared_buffer的較大值會提供非常好的性能,盡管您應該始終進行基準測試以找到正確的平衡。

# show shared_buffers;
shared_buffers
----------------
128MB

wal_buffers

PostgreSQL將其WAL(預寫日志)記錄寫入緩沖區,然后這些緩沖區被刷新到磁盤。緩沖區的默認大小(由wal_buffers定義)為16MB,但如果您有多個并發連接,則更高的值可以提供更好的性能。

effective_cache_size

effective_cache_size參數提供了磁盤緩存可用存儲器的估計值。它只是一個指南,而不是確切的分配內存或緩存大小。它不分配實際內存,而是告訴優化器內核中可用的緩存量。這是使用索引成本估計的一個因素;值越高,使用索引掃描的可能性越大,而值越低,使用順序掃描的可能性越大。如果值設置得太低,查詢規劃器可以決定不使用某些索引,即使它們會有幫助。還應該考慮不同表上并發查詢的預期數量,因為它們必須共享可用空間。因此,設置一個大的值總是有益的。

讓我們看看effective_cache_size的一些實際含義。<

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921189.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921189.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921189.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

wps的excel如何轉為谷歌在線表格

1.?打開 Google Sheets&#xff08;sheets.google.com&#xff09;。 2.?新建一個空白表格。3.?點擊菜單 文件 → 導入 (File → Import)。4.?選擇在 WPS 保存好的 .xlsx 文件上傳。5.?選擇 “新建表格” 或 “替換當前表格”&#xff0c;就能直接在 Google Sheets 使用注…

貓頭虎AI 薦研|騰訊開源長篇敘事音頻生成模型 AudioStory:統一模型,讓 AI 會講故事

&#x1f42f;貓頭虎薦研&#xff5c;騰訊開源長篇敘事音頻生成模型 AudioStory&#xff1a;統一模型&#xff0c;讓 AI 會講故事 大家好&#xff0c;我是貓頭虎 &#x1f42f;&#x1f989;&#xff0c;又來給大家推薦新鮮出爐的 AI 開源項目&#xff01; 這次要聊的是騰訊 A…

收藏!VSCode 開發者工具快捷鍵大全

一、文件操作快捷鍵1. 打開與關閉文件Ctrl O&#xff08;Windows/Linux&#xff09;或 Command O&#xff08;Mac&#xff09;&#xff1a;打開文件&#xff0c;可以通過輸入文件名快速查找并打開相應文件。Ctrl W&#xff08;Windows/Linux&#xff09;或 Command W&#…

Simulations RL 平臺學習筆記

1. 選擇標準 1.1 開源項目&#xff0c;&#x1f31f;star數量越多越好 2. 常見平臺 2.1 &#x1f31f;18.6k ML-Agents&#xff1a;基于Unity實現 2.2 &#x1f31f;1.2k Godot RL Agents

【國內電子數據取證廠商龍信科技】IOS 逆向脫殼

我們都知道&#xff0c;大多數的 APP 在開發的時候一般都會加上一層殼&#xff0c;例如 愛加密、梆梆、360、網易易盾等等。那 APK 的脫殼我們見得多了&#xff0c;那 IOS 逆向脫殼又是怎樣子的呢&#xff1f;首先咱們先了解一下為什么要砸殼&#xff0c;因為 IOS 開發者開發軟…

基于STM32單片機溫濕度PM2.5粉塵甲醛環境質量wifi手機APP監測系統

1 基于STM32單片機溫濕度PM2.5粉塵甲醛環境質量WiFi手機APP監測系統 本系統旨在實現對環境中溫度、濕度、PM2.5粉塵濃度以及甲醛濃度的實時監測&#xff0c;并通過WiFi技術將數據傳輸至手機APP端&#xff0c;實現移動化與可視化的環境質量檢測。系統在硬件上主要依賴STM32單片…

用C++實現日期類

在上學的時候&#xff0c;總是在計算還有多少天放假&#xff1b;在上班的時候&#xff0c;總是在計算還有多久發工資&#xff1f;我們一般通過日歷得到結果&#xff0c;那自己能不能實現一些基本的功能呢&#xff1f;答案是可以的&#xff01;需要實現內容&#xff1a;1. 日期加…

百度網盤基于Flink的實時計算實踐

01 概覽 隨著數字化轉型的來臨&#xff0c;企業對于數據服務的實時化需求日益增長&#xff0c;在大規模數據和復雜場景的情況下&#xff0c;Flink在實時計算數據鏈路中扮演著極為重要的角色&#xff0c;本文介紹了網盤如何通過 Flink 構建實時計算引擎&#xff0c;從而提供高性…

【CMake】策略

目錄 一.CMake策略簡要理解 1.1.第一階段&#xff1a;童年時期&#xff08;舊行為&#xff0c;The "Old Way"&#xff09; 1.2.第二階段&#xff1a;成長與改進&#xff08;引入新行為&#xff0c;The "New Way"&#xff09; 1.3.第三階段&#xff1a;…

LLM中的function call

1. 概念 **Function Call&#xff08;函數調用&#xff09;**是指在編程中&#xff0c;程序可以通過調用預定義的函數來執行特定的操作。在LLM中&#xff0c;函數調用的概念擴展了模型的能力&#xff0c;使其不僅能夠生成文本&#xff0c;還能與外部系統進行交互。通過函數調用…

【系統架構設計(13)】項目管理上:盈虧平衡分析與進度管理

文章目錄零、核心思想&#xff1a;經濟性與時效性的動態平衡一、盈虧平衡分析&#xff1a;項目的經濟生命線1、核心公式與決策邏輯二、進度管理&#xff1a;項目的時效生命線1. **工作分解結構&#xff08;WBS&#xff09;**2. 進度管理流程3、關鍵路徑法關鍵路徑法&#xff08…

【SuperSocket 】利用 TaskCompletionSource 在 SuperSocket 中實現跨模塊異步處理客戶端消息

利用 TaskCompletionSource 在 SuperSocket 中實現跨模塊異步處理客戶端消息 在使用 SuperSocket 構建 TCP 服務時&#xff0c;我們經常會遇到這樣的需求&#xff1a; 服務端接收到客戶端數據后&#xff0c;需要將數據交給其他模塊處理處理完成后再將結果返回給調用模塊或客戶端…

《IC驗證必看|semaphore與mailbox的核心區別》

月薪30K驗證工程師必答&#xff1a;SystemVerilog中semaphore與mailbox的核心區別&#xff0c;及必須用semaphore的場景深度解析 在驗證工程師的技能體系里&#xff0c;線程同步與資源管控是區分“基礎會用”&#xff08;20K水平&#xff09;和“精通工程化”&#xff08;30K水…

Spring線程池ThreadPoolTaskExecutor?詳解

ThreadPoolTaskExecutor?寫法Bean(name "taskExecutor") public ThreadPoolTaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(8); // 8核CPU服務器建議值executor.setMaxPoolSize(…

Unity之安裝教學

UnityHub下載 下載官網地址&#xff1a;Unity Hub下載地址 打開網址右上角&#xff0c;登錄/注冊賬號 登錄完畢后&#xff0c;點擊下載 安裝Unity Hub 雙擊傻瓜式安裝 安裝完成 啟動UnityHub 雙擊啟動 左上角設置 設置中文 左上角登錄賬號 添加免費許可證 設置-許可證-添加 安裝…

Redis 集群模式與高可用機制

最近在準備面試&#xff0c;正把平時積累的筆記、項目中遇到的問題與解決方案、對核心原理的理解&#xff0c;以及高頻業務場景的應對策略系統梳理一遍&#xff0c;既能加深記憶&#xff0c;也能讓知識體系更扎實&#xff0c;供大家參考&#xff0c;歡迎討論。在分布式環境下&a…

Flutter + Web:深度解析雙向通信的混合應用開發實踐

Flutter Web&#xff1a;深度解析雙向通信的混合應用開發實踐 前言 在當今快速發展的移動應用開發領域&#xff0c;開發者們始終在尋求一種能夠平衡開發效率、跨平臺能力和用戶體驗的完美方案。原生開發性能卓越&#xff0c;但雙平臺&#xff08;iOS/Android&#xff09;開發…

如何查看Linux系統中文件夾或文件的大小

在日常運維和開發工作中&#xff0c;了解文件夾和文件占用的磁盤空間是非常重要的。尤其是當你在服務器上部署應用&#xff08;如 Jenkins&#xff09;時&#xff0c;合理監控磁盤使用情況可以避免磁盤空間不足導致的各種問題。在 Linux 系統中&#xff0c;我們可以使用一些簡單…

豪華酒店品牌自營APP差異對比分析到產品重構

一、萬豪國際集團旗下豪華酒店品牌及統一APP 萬豪旗下奢華品牌均整合于 「萬豪旅享家(Marriott Bonvoy)」APP,會員可通過該平臺預訂、管理積分及享受跨品牌服務。以下為核心豪華品牌: 1. 經典奢華品牌 麗思卡爾頓酒店(The Ritz-Carlton) 定位:頂級奢華,以管家服務、歷…

ESLint 相關

no-unused-vars 等常見報錯提醒關閉 1. no-unused-vars 報錯示例&#xff1a; useMemo is defined but never used no-unused-vars解決方式 方法一&#xff1a;局部禁用某一行 // eslint-disable-next-line no-unused-vars const result useMemo(() > {}, []);方法二&…