內(nèi)存配置優(yōu)化:PG中與內(nèi)存有關(guān)的配置參數(shù):shared_buffers:共享緩存區(qū)的大小,相當于Oracle中的SGA,推薦為內(nèi)存的1/4,不超過總內(nèi)存的1/2。從PG9.3開始,共享內(nèi)存已從System V方式改為了Posix方式和mmap方式,因此在pg9.3以后不需要配置linux的shmmax和shmall參數(shù),之前的版本還需要配置。shmmax:表示單個共享內(nèi)存段可以創(chuàng)建的最大值,shmall:表示整個系統(tǒng)內(nèi)可以為共享內(nèi)存配置的頁面數(shù)。work_mem:為每個進程單獨分配的內(nèi)存,主要用于排序、hash等操作maintence_work_mem:也是為每個進程單獨分配的內(nèi)存,但主要用于維護操作,如vacuumPG9.4以后開始支持大頁,打開大頁的方法:huge_pages=try設置為try后,pg會嘗試使用大頁,如果操作系統(tǒng)沒有配置大頁或配置的大頁小于PG需要的大頁內(nèi)存,那么PG在分配大頁失敗后,會使用普通內(nèi)存。如果把huge_pages設置為on,那么分配大頁失敗后,pg啟動也會失敗。vacuum:定期做vacuum原因: 1. 標記多版本中不再需要的舊版本行所占用的空間為可用,以重復使用這部分磁盤空間 2. 更新統(tǒng)計數(shù)據(jù),保證執(zhí)行計劃的正確性 3. 事務ID為32位遞增的一個整數(shù),當增加到最大值后,會從起始值開始,這就要保證舊的已提交事務的數(shù)據(jù)仍然可見,需要把這些行上的事務ID更新為一個永遠可見的事務ID(frozen XID)目前有一下兩種vacuum: 1. 標準的vacuum 2. vacuum fullvacuum可以與select語句或DML語句并行執(zhí)行,但是若在清理該表,不能使用alter table此類DDL語句修改表定義。vacuum full需要在表上的一個排斥鎖才能工作,不能與其他使用該表的語句并行執(zhí)行,所以一般使用標準vacuum即可。但vacuum full能釋放更多磁盤空間。#autovacuum = on # Enable autovacuum sub
新聞熱點
疑難解答