go 如何修改postgresql的配置參數(shù)
postgresql.conf與postgresql.auto.conf的區(qū)別
postgresql.auto.conf的優(yōu)先級高于postgresql.conf,如果一個(gè)參數(shù)同時(shí)存在postgresql.auto.conf和postgresql.conf里面,系統(tǒng)會(huì)先讀postgresql.auto.conf的參數(shù)配置。
- 使用alter system set修改的是postgresql.auto.conf文件的內(nèi)容,postgresql.conf則是通過文本編輯方式修改。比如執(zhí)行alter system set max_wal_size=default將參數(shù)設(shè)回 default 時(shí),postgresql.auto.conf文件里的max_wal_size這項(xiàng)配置會(huì)被刪除,重新用回postgresql.conf文件的設(shè)置。
- 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ù)設(shè)回 default 時(shí),postgresql.auto.conf文件里的max_wal_size這項(xiàng)配置會(huì)被刪除,重新用回postgresql.conf文件的設(shè)置。
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()會(huì)加載postgresql.auto.conf文件
手工修改postgresql.auto.conf文件,重啟postgresql會(huì)加載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視頻流服務(wù)器的優(yōu)缺點(diǎn)
HLS 是 HTTP Live Streaming 的縮寫,是蘋果開發(fā)的一種基于 HTTP 的自適應(yīng)比特率流媒體傳輸協(xié)議。這篇文章主要介紹了基于 HLS 創(chuàng)建 Golang 視頻流服務(wù)器,需要的朋友可以參考下2021-08-08Golang設(shè)計(jì)模式之工廠方法模式講解和代碼示例
工廠方法是一種創(chuàng)建型設(shè)計(jì)模式, 解決了在不指定具體類的情況下創(chuàng)建產(chǎn)品對象的問題,本文將通過代碼示例詳細(xì)給大家介紹一下Golang工廠方法模式,感興趣的同學(xué)可以參考一下2023-06-06golang快速實(shí)現(xiàn)網(wǎng)頁截圖的方法
這篇文章主要介紹了golang快速實(shí)現(xiàn)網(wǎng)頁截圖的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03淺析Go語言如何避免數(shù)據(jù)競爭Data?Race和競態(tài)條件Race?Condition
在并發(fā)編程中,數(shù)據(jù)競爭?(Data?Race)?和?競態(tài)條件?(Race?Condition)?是兩個(gè)常見的問題,本文將簡單介紹一下二者如何避免,有需要的可以了解下2025-01-01解決Goland 提示 Unresolved reference 錯(cuò)誤的問題
這篇文章主要介紹了解決Goland 提示 Unresolved reference 錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12