go 如何修改postgresql的配置參數(shù)
postgresql.conf與postgresql.auto.conf的區(qū)別
postgresql.auto.conf的優(yōu)先級(jí)高于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則是通過(guò)文本編輯方式修改。比如執(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則是通過(guò)文本編輯方式修改。比如執(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ù)庫(kù)
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go channel發(fā)送方和接收方如何相互阻塞等待源碼解讀
這篇文章主要為大家介紹了Go channel發(fā)送方和接收方如何相互阻塞等待源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
golang標(biāo)準(zhǔn)庫(kù)time時(shí)間包的使用
時(shí)間和日期是我們編程中經(jīng)常會(huì)用到的,本文主要介紹了golang標(biāo)準(zhǔn)庫(kù)time時(shí)間包的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Go語(yǔ)言與其他語(yǔ)言進(jìn)行交互的方式詳解
在當(dāng)今的軟件開發(fā)領(lǐng)域,多種編程語(yǔ)言常常需要協(xié)同工作,以充分利用各自的優(yōu)勢(shì)來(lái)構(gòu)建復(fù)雜的應(yīng)用系統(tǒng),Go 語(yǔ)言作為一門高效、簡(jiǎn)潔的編程語(yǔ)言,也經(jīng)常需要與其他語(yǔ)言進(jìn)行交互,接下來(lái),我們將詳細(xì)探討 Go 語(yǔ)言如何與其他語(yǔ)言進(jìn)行交互,需要的朋友可以參考下2024-06-06
Go擴(kuò)展原語(yǔ)之SingleFlight的用法詳解
Go語(yǔ)言擴(kuò)展包同步原語(yǔ)singleflight.Group能夠再一個(gè)服務(wù)中抑制對(duì)下游的多次重復(fù)請(qǐng)求,它能夠限制對(duì)同一個(gè)鍵值對(duì)的多次重復(fù)請(qǐng)求,減少對(duì)下游的瞬時(shí)流量,接下來(lái)小編就給大家講講Go SingleFlight的具體用法,需要的朋友可以參考下2023-07-07
Go語(yǔ)言實(shí)現(xiàn)生成樣式美觀的PDF文件
使用?Go?語(yǔ)言生成樣式美觀的?PDF?文件是一個(gè)常見的需求,尤其是在報(bào)告生成、發(fā)票、合同等場(chǎng)景中,下面就跟隨小編一起來(lái)學(xué)習(xí)一下具體實(shí)現(xiàn)方法吧2025-01-01
使用go連接clickhouse的實(shí)戰(zhàn)操作
這篇文章主要給大家介紹了關(guān)于使用go連接clickhouse的實(shí)戰(zhàn)操作,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用go具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03

