go 如何修改postgresql的配置参数

 更新时间:2024年01月15日 10:39:26   作者:liuyunshengsir  
这篇文章主要介绍了go 如何修改postgresql的配置参数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

postgresql.conf与postgresql.auto.conf的区别

postgresql.auto.conf的优先级高于postgresql.conf,如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面,系统会先读postgresql.auto.conf的参数配置。

  • 使用alter system set修改的是postgresql.auto.conf文件的内容,postgresql.conf则是通过文本编辑方式修改。比如执行alter system set max_wal_size=default将参数设回 default 时,postgresql.auto.conf文件里的max_wal_size这项配置会被删除,重新用回postgresql.conf文件的设置。
  • postgresql.conf文件的参数后面有# (change requires restart),表示必须重启才能生效,使用select pg_reload_conf()或pg_ctl reload不行。

使用alter system set修改的是postgresql.auto.conf文件的内容,postgresql.conf则是通过文本编辑方式修改。比如执行alter system set max_wal_size=default将参数设回 default 时,postgresql.auto.conf文件里的max_wal_size这项配置会被删除,重新用回postgresql.conf文件的设置。

postgresql.conf文件的参数后面有# (change requires restart),表示必须重启才能生效,使用select pg_reload_conf()或pg_ctl reload不行。

执行alter system set max_wal_size=2500;
发现修改的是postgresql.auto.conf文件
执行select pg_reload_conf();同样的参数,优先加载的是postgresql.auto.conf文件里面的参数配置
重启postgresql后,同样的参数,优先使用的postgresql.auto.conf文件里面的参数配置
手工修改postgresql.auto.conf文件,执行select pg_reload_conf()会加载postgresql.auto.conf文件
手工修改postgresql.auto.conf文件,重启postgresql会加载postgresql.auto.conf文件

go的代码样例

func main() {
	// 连接到 PostgreSQL 数据库
	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("执行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)
	}
}

到此这篇关于go 修改postgresql的配置参数的文章就介绍到这了,更多相关go postgresql的配置参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于HLS创建Golang视频流服务器的优缺点

    基于HLS创建Golang视频流服务器的优缺点

    HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议。这篇文章主要介绍了基于 HLS 创建 Golang 视频流服务器,需要的朋友可以参考下
    2021-08-08
  • 详解go语言中type关键词的几种使用

    详解go语言中type关键词的几种使用

    这篇文章主要介绍了详解go语言中type的几种使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 浅谈golang结构体偷懒初始化

    浅谈golang结构体偷懒初始化

    这篇文章主要介绍了浅谈golang结构体偷懒初始化,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang设计模式之工厂方法模式讲解和代码示例

    Golang设计模式之工厂方法模式讲解和代码示例

    工厂方法是一种创建型设计模式, 解决了在不指定具体类的情况下创建产品对象的问题,本文将通过代码示例详细给大家介绍一下Golang工厂方法模式,感兴趣的同学可以参考一下
    2023-06-06
  • Go 验证字符串中是否包含中文(推荐)

    Go 验证字符串中是否包含中文(推荐)

    这篇文章主要介绍了Go 验证字符串中是否包含中文,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Go实现双向链表的示例代码

    Go实现双向链表的示例代码

    这篇文章主要介绍了Go实现双向链表的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详解如何保留Go程序崩溃现场

    详解如何保留Go程序崩溃现场

    这篇文章主要为大家介绍了如何保留Go程序崩溃现场示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • golang快速实现网页截图的方法

    golang快速实现网页截图的方法

    这篇文章主要介绍了golang快速实现网页截图的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 浅析Go语言如何避免数据竞争Data Race和竞态条件Race Condition

    浅析Go语言如何避免数据竞争Data Race和竞态条件Race Condition

    在并发编程中,数据竞争 (Data Race) 和 竞态条件 (Race Condition) 是两个常见的问题,本文将简单介绍一下二者如何避免,有需要的可以了解下
    2025-01-01
  • 解决Goland 提示 Unresolved reference 错误的问题

    解决Goland 提示 Unresolved reference 错误的问题

    这篇文章主要介绍了解决Goland 提示 Unresolved reference 错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论