1. 程式人生 > >PostgreSQL之效能優化中常用到的配置引數

PostgreSQL之效能優化中常用到的配置引數

開心一笑

【中學高考注意事項:翻卷聲音一定要大、快,讓全場都聽到,翻得他們開始懷疑自己的人生。聽力後,大喊一聲:太TMD簡單了!把筆重重放下,聲音要大,然後擰杯子開始放肆地喝水。做到一半拍一下大腿,大喊一聲:臥槽原題!最後30分鐘,開始抖腿,看一下埋頭苦寫的人,長嘆一口氣交卷走人。可以不上好高中、好大學,但裝B必須到位。還有就是,哥們,我在工地等你。】

視訊教程

大家好,我錄製的視訊《Java之優雅程式設計之道》已經在CSDN學院釋出了,有興趣的同學可以購買觀看,相信大家一定會收穫到很多知識的。謝謝大家的支援……

提出問題

PostgreSQL資料庫如何進行簡單的效能調優???

解決問題

前言

PostgreSQL的配置引數作為效能調優的一部分,起著重要的位置。有時候一個簡單的配置引數就會覺得應用的效能。因此有必要簡單瞭解下其相關的配置引數。

查詢Linux伺服器配置

在進行效能調優之前,需要清楚知道伺服器的配置資訊,比如說 CPU,記憶體,伺服器版本等資訊。

查詢系統版本資訊

[email protected]:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

Linux檢視物理CPU個數、核數、邏輯CPU個數

# 總核數 = 物理CPU個數 X 每顆物理CPU的核數 
# 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超執行緒數

# 檢視物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 檢視每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 檢視邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l

查詢記憶體資訊

cat /proc/meminfo

PostgreSQL配置引數檢視方式

--檢視所有資料庫引數的值
show all;  

1

--查詢某一個具體引數
show  選項名;

2

PostgreSQL效能調優重要的配置引數

該表格來自網上大神整理的:

選項 預設值 說明 是否優化 原因
max_connections 100 允許客戶端連線的最大數目 因為在測試的過程中,100個連線已經足夠
fsync on 強制把資料同步更新到磁碟 因為系統的IO壓力很大,為了更好的測試其他配置的影響,把改引數改為off
shared_buffers 24MB 決定有多少記憶體可以被PostgreSQL用於快取資料(推薦記憶體的1/4,不超過記憶體的1/2) 在IO壓力很大的情況下,提高該值可以減少IO
work_mem 1MB 使內部排序和一些複雜的查詢都在這個buffer中完成,不夠要適可而止,每個連線都要用這麼大的 有助提高排序等操作的速度,並且減低IO
effective_cache_size 128MB 優化器假設一個查詢可以用的最大記憶體,和shared_buffers無關(推薦記憶體的1/2) 設定稍大,優化器更傾向使用索引掃描而不是順序掃描
maintenance_work_mem 16MB 這裡定義的記憶體只是被VACUUM等耗費資源較多的命令呼叫時使用 把該值調大,能加快命令的執行
wal_buffer 768kB 日誌快取區的大小 可以降低IO,如果遇上比較多的併發短事務,應該和commit_delay一起用
checkpoint_segments 3 設定wal log的最大數量數(一個log的大小為16M) 預設的48M的快取是一個嚴重的瓶頸,基本上都要設定為10以上
checkpoint_completion_target 0.5 表示checkpoint的完成時間要在兩個checkpoint間隔時間的N%內完成 能降低平均寫入的開銷
commit_delay 0 事務提交後,日誌寫到wal log上到wal_buffer寫入到磁碟的時間間隔。需要配合commit_sibling 能夠一次寫入多個事務,減少IO,提高效能
commit_siblings 5 設定觸發commit_delay的併發事務數,根據併發事務多少來配置 減少IO,提高效能

PostgreSQL配置引數修改的方式

1.修改配置檔案

在配置檔案C:\PostgreSQL\data\pg96\postgresql.conf 中直接修改,修改前記得備份一下原檔案,因為你不知道意外和明天不知道哪個會先來。修改完成之後,記得重啟資料庫哦。

2.命令列的修改方式

    ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }

例如:我們現在要修改 maintenance_work_mem

--引數
show all;

show maintenance_work_mem;
--注意這裡的設定不會改變postgresql.conf,只會改變postgresql.conf
ALTER SYSTEM SET maintenance_work_mem= 1048576;

--重啟資料庫
show maintenance_work_mem; 

--取消postgresql.auto.conf的引數設定
ALTER SYSTEM SET maintenance_work_mem= default;

結束語

PostgreSql的配置優化需要根據具體的伺服器環境,進行相關引數的調優,跟除錯程式碼差不多。這裡簡單的進行整理。

願此文對你有所幫助…

讀書感悟

來自勞倫斯《兒子與情人》

  • 愛情應該給人一種自由感,而不是囚禁感。
  • 一個人往往受生活的支配,生活支撐人的軀殼,完成人的歷史使命,但同時卻又虛無縹緲,彷彿任人去自生自滅,不聞不問。

經典故事

【有一天某個農夫的一頭驢子,不小心掉進一口枯井裡,農夫絞盡腦汁想辦法救出驢子,但幾個小時過去了,驢子還在井裡痛苦地哀嚎著。
  最後,這位農夫決定放棄,他想這頭驢子年紀大了,不值得大費周章去把它救出來,不過無論如何,這口井還是得填起來。於是農夫便請來左鄰右舍幫忙一起將井中的驢子埋了,以免除它的痛苦。
  農夫的鄰居們人手一把鏟子,開始將泥土鏟進枯井中。當這頭驢子瞭解到自己的處境時,剛開始哭得很悽慘。但出人意料的是,一會兒之後這頭驢子就安靜下來了。農夫好奇地探頭往井底一看,出現在眼前的景象令他大吃一驚:
  當鏟進井裡的泥土落在驢子的背部時,驢子的反應令人稱奇——它將泥土抖落在一旁,然後站到鏟進的泥土堆上面!
  就這樣,驢子將大家剷倒在它身上的泥土全數抖落在井底,然後再站上去。很快地,這隻驢子便得意地上升到井口,然後在眾人驚訝的表情中快步地跑開了!
  溫馨提示:
  就如驢子的情況,在生命的旅程中,有時候我們難免會陷入枯井裡,會被各式各樣的泥沙傾倒在我們身上,而想要從這些枯井脫困的祕訣就是:將泥沙抖落掉,然後站到上面去!

大神文章

其他

如果有帶給你一絲絲小快樂,就讓快樂繼續傳遞下去,歡迎點贊、頂、歡迎留下寶貴的意見、多謝支援!

相關推薦

PostgreSQL效能優化常用到的配置引數

開心一笑 【中學高考注意事項:翻卷聲音一定要大、快,讓全場都聽到,翻得他們開始懷疑自己的人生。聽力後,大喊一聲:太TMD簡單了!把筆重重放下,聲音要大,然後擰杯子開始放肆地喝水。做到一半拍一下大腿,大喊一聲:臥槽原題!最後30分鐘,開始抖腿,看一下埋頭苦寫的人

面試被問-----sql優化in與exists的區別 Mysql in or exists not exists not in區別 (網路整理) Sql語句IN和exists的區別及應用 [筆記] SQL效能優化 - 避免使用 IN 和 NOT IN

曾經一次去面試,被問及in與exists的區別,記得當時是這麼回答的:''in後面接子查詢或者(xx,xx,xx,,,),exists後面需要一個true或者false的結果",當然這麼說也不算錯,但別人想聽的是sql優化相關,肯定是效率的問題,只是那個時候確實不知道它們在sql優化上的區別,只知道用in會進

Spring Cloudeureka.instance為字首的的常用配置引數說明。

引數名 說明 預設值 preferIpAddress 是否優先使用IP地址作為主機名的標識 false leaseRenewalIntervalInS

機器學習numpy庫常用的函數介紹(一)

做的 string idt 維度 數據 round float 數值 array 1. mat() mat()與array的區別: mat是矩陣,數據必須是2維的,是array的子集,包含array的所有特性,所做的運算都是針對矩陣來進行的。 array是數組,數據可以是多

Android 效能優化

眾所周知,android裝置作為一種移動裝置,不管是cpu還是記憶體都無法跟pc裝置相提並論。這就意味著我們不能無限制地使用記憶體和cpu的資源,過多地使用記憶體會導致oom,過多地使用cpu資源,做大量的耗時任務,會導致手機變得異常卡頓,甚至無法響應出現ANR。所以我們在平常做開發時,一定要注意效

10 行程式碼解決漏斗轉換計算效能優化

大話資料計算效能優化 大資料分析的效能優化,說道底,就優化一個事情:針對確定的一個計算任務(資料確定,結果確定),以最經濟的方案得到結果。 這個最經濟的方案主要考量三個成本:時間成本、硬體成本、軟體成本。 時間成本:根據計算任務的特點,能容忍的最長時間各不相同。那些 T+0 的計算任務,實時性

Spring Boot2.0效能優化

    1、JVM引數調優   針對執行效果  吞吐量    初始堆記憶體與最大堆儘量相同   減少垃圾回收次數  2、掃包優化: 啟動優化 預設Tomcat容器改為Undertow  To

JavaScript基礎概念----效能優化

一、載入與執行 body閉合標籤之前,將所有的script標籤放到頁面的底部,能確保在指令碼執行前頁面已經完成渲染 合併指令碼,頁面中script標籤越少,載入越快,響應也更迅速 使用多種無阻塞下載Javascript方法: 使用script標籤的defer屬性

Android學習筆記效能優化SparseArray

學習內容: 1.Android中SparseArray的使用..     昨天研究完橫向二級選單,發現其中使用了SparseArray去替換HashMap的使用.於是乎自己查了一些相關資料,自己同時對效能進行了一些測試。首先先說一下SparseArray的原理.

.NET開發效能優化

資料庫效能之表設計   樹表設計:       樹狀表都是使用ID和IDParent兩個欄位來表示樹關係。對樹進行查詢只能使用自關聯方式,不光寫法麻煩而且記錄多的時候查詢效能會非常差。建議在設計樹表的時候可以考慮加入treePa

linux 常用編譯引數解析

linux 中常用編譯引數解析   版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/taoyanqi8932/article/details/51758722 1.gcc包含的c/c++編譯器 gcc,cc,c++,g

netty原始碼閱讀效能優化工具類Recycle異執行緒獲取物件

在這篇《netty原始碼閱讀之效能優化工具類之Recycler獲取物件》文章裡面,我們還有一個scavenge()方法沒有解析,也就是在別的執行緒裡面回收物件。下面我們開始介紹,從這個方法開始進入: boolean scavenge() { // con

jvm 常用配置引數

-verbose:gc 列印 GC 的簡要資訊 -XX:+printGC 列印 GC 的簡要資訊 [GC (Allocation Failure) 6036K->1672K(19968K), 0.0012595 secs] -XX:+Print

MySQL效能優化

MySQL效能的指標是指響應時間。對效能的剖析包括對應用程式的剖析和對MySQL查詢的剖析。 剖析應用程式 一種比較好的對應用程式進行效能優化工具New Relic,在收藏中有安裝步驟。該工具不僅對資料庫,還能對整個系統進行監控,即使不能給出優化方案,也能定位問

netty原始碼閱讀效能優化工具類FastThreadLocal的使用

先說明FastThreadLocal使用的效果。 1、比jdk原生的ThreadLocal的快 2、不同執行緒之間能保證執行緒安全 這是我們的使用者程式碼: public class FastThreadLocalTest { private static F

netty原始碼閱讀效能優化工具類FastThreadLocal的建立

建立的話我們直接從FastThreadLocal的構造方法進入: public FastThreadLocal() { index = InternalThreadLocalMap.nextVariableIndex(); } 可見他是現

netty原始碼閱讀效能優化工具類Recycler獲取物件

 Recycler獲取物件主要分為以下幾部分: 1、獲取當前執行緒的Stack 2、從Stack裡面彈出物件 3、如果彈出物件為空,那就建立物件並且繫結到Stack裡面 我們從Recycler的get方法進入,就是這個原始碼: @SuppressWarnin

程式設計小知識效能優化

本文簡述了一種效能優化中常見的思維誤區 程式開發總是離不開效能優化,雖然規避不成熟優化的箴言早已有之,但我們又往往會被自己翻湧的思維火花所牽絆,義無反顧的開啟自己的效能劣化之旅… 考慮下面的一個簡單問題(以 C# 為例): 編寫一個字串修飾函式:給定一個

Android面試效能優化

前言 本文是為了面試而寫的效能優化。目的不是為了具體的深入而是對於要面試的同學在面試的時候能和麵試官說出的效能優化的方面。在面試的時候基本現在每個面試官都會問一些關於效能優化方法的問題。那麼該怎麼回答呢?面試不同於我們學習新的知識點,要完全學會,要學精,對於面試

Android效能優化問題

1、UI優化 在xml佈局檔案中,合理選擇RelativeLayout、LinearLayout、FrameLayout,其中RelativeLayout會讓子View呼叫兩次onMeasure()方法,並且佈局複雜時,onMeasure也相對複雜,效率比較低;在LinearLayout中