go 如何修改postgresql的配置參數(shù)
postgresql.conf與postgresql.auto.conf的區(qū)別
postgresql.auto.conf的優(yōu)先級高于postgresql.conf,如果一個參數(shù)同時存在postgresql.auto.conf和postgresql.conf里面,系統(tǒng)會先讀postgresql.auto.conf的參數(shù)配置。
- 使用alter system set修改的是postgresql.auto.conf文件的內(nèi)容,postgresql.conf則是通過文本編輯方式修改。比如執(zhí)行alter system set max_wal_size=default將參數(shù)設回 default 時,postgresql.auto.conf文件里的max_wal_size這項配置會被刪除,重新用回postgresql.conf文件的設置。
- postgresql.conf文件的參數(shù)后面有# (change requires restart),表示必須重啟才能生效,使用select pg_reload_conf()或pg_ctl reload不行。
使用alter system set修改的是postgresql.auto.conf文件的內(nèi)容,postgresql.conf則是通過文本編輯方式修改。比如執(zhí)行alter system set max_wal_size=default將參數(shù)設回 default 時,postgresql.auto.conf文件里的max_wal_size這項配置會被刪除,重新用回postgresql.conf文件的設置。
postgresql.conf文件的參數(shù)后面有# (change requires restart),表示必須重啟才能生效,使用select pg_reload_conf()或pg_ctl reload不行。
執(zhí)行alter system set max_wal_size=2500;
發(fā)現(xiàn)修改的是postgresql.auto.conf文件
執(zhí)行select pg_reload_conf();同樣的參數(shù),優(yōu)先加載的是postgresql.auto.conf文件里面的參數(shù)配置
重啟postgresql后,同樣的參數(shù),優(yōu)先使用的postgresql.auto.conf文件里面的參數(shù)配置
手工修改postgresql.auto.conf文件,執(zhí)行select pg_reload_conf()會加載postgresql.auto.conf文件
手工修改postgresql.auto.conf文件,重啟postgresql會加載postgresql.auto.conf文件
go的代碼樣例
func main() { // 連接到 PostgreSQL 數(shù)據(jù)庫 dsn := "host=localhost user=user password=password dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai" db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { log.Fatal(err) } defer func() { sqlDB, err := db.DB() if err != nil { log.Fatal(err) } sqlDB.Close() }() cmd := "ALTER SYSTEM SET array_nulls= 'off' " _, err = db.Raw(cmd).Rows() if err != nil { return } cmdReload := "SELECT pg_reload_conf()" _, err = db.Raw(cmdReload).Rows() if err != nil { fmt.Printf("執(zhí)行sql[%s]失敗:%v", cmdReload, err) return } cfg, err := ini.LoadSources(ini.LoadOptions{AllowShadows: true}, "/var/lib/pgsql/12/data/postgresql.auto.conf") // 獲取指定的 Section section, err := cfg.GetSection("DEFAULT") if err != nil { log.Fatal(err) } keyToCheck := "array_nulls" // 檢查 key 是否存在 if section.HasKey(keyToCheck) { fmt.Printf("Key '%s' exists in the section.\n", keyToCheck) } else { fmt.Printf("Key '%s' does not exist in the section.\n", keyToCheck) } }
到此這篇關(guān)于go 修改postgresql的配置參數(shù)的文章就介紹到這了,更多相關(guān)go postgresql的配置參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于HLS創(chuàng)建Golang視頻流服務器的優(yōu)缺點
HLS 是 HTTP Live Streaming 的縮寫,是蘋果開發(fā)的一種基于 HTTP 的自適應比特率流媒體傳輸協(xié)議。這篇文章主要介紹了基于 HLS 創(chuàng)建 Golang 視頻流服務器,需要的朋友可以參考下2021-08-08淺析Go語言如何避免數(shù)據(jù)競爭Data?Race和競態(tài)條件Race?Condition
在并發(fā)編程中,數(shù)據(jù)競爭?(Data?Race)?和?競態(tài)條件?(Race?Condition)?是兩個常見的問題,本文將簡單介紹一下二者如何避免,有需要的可以了解下2025-01-01解決Goland 提示 Unresolved reference 錯誤的問題
這篇文章主要介紹了解決Goland 提示 Unresolved reference 錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12