草庐IT

postgresql-performance

全部标签

postgresql - 扫描 Postgres 复合类型

我定义了一个复合类型用于表中:CREATETYPEdurationAS(hoursNUMERIC,minutesNUMERIC);CREATETABLEfoo(idSERIALPRIMARYKEY,my_durationduration);INSERTINTOfoo(id,my_duration)VALUES(1,ROW(1,30));如何使用database/sql扫描它?当我用实现扫描仪接口(interface)时func(d*Duration)Scan(valueinterface{})error{log.Println(value)ifvalue==nil{*d=Duratio

postgresql - Postgres : Optimising concurrent same row updates

问题我正在使用PostgreSQLv10+golang,我认为这是一个非常常见的SQL问题:我有一个“计数器”表,它有一个current_value和一个max_value整数列。严格来说,一旦current_value>=max_value,我想放弃请求。我有几个Kubernetespod,每个API调用可能会将“计数器”表中同一行(在最坏情况下)的current_value增加1(可以被认为是分布式主机对同一数据库的并发更新)。在我当前和天真的实现中,对同一行的多个更新自然会相互阻塞(如果重要的话,隔离级别是“已提交读”)。在最坏的情况下,我每秒有大约10多个请求会更新同一行。这会

postgresql - 连接 : connection timed out

我已经使用gosql包成功连接到Postgres数据库:...db,err:=sql.Open("postgres",connStr)然后我使用返回的数据库执行(长时间运行的)查询:rows,err:=db.Query(...)我得到了错误:dialtcpxx.xxx.xxx.xx:5432:connect:connectiontimedout我有几个问题:为什么连接超时?我能做些什么来防止它超时吗? 最佳答案 sql.Open()mayjustvalidateitsargumentswithoutcreatingaconnecti

performance - 大量内存使用会减慢不相关的代码

我正在维护一个读取和写入大量数据的Go项目的代码,并且已经成功完成了一段时间。最近,我做了一个改变:一个大约有200万条记录的CSV文件在程序开始时加载到一个带有struct值的map中。该映射仅用于B部分,但首先执行A部分。这第一部分的运行速度明显比以前慢(处理时间翻了两番)。这很奇怪,因为那部分逻辑没有改变。我花了一个星期试图解释这是如何发生的。以下是我采取的步骤(当我提到性能时,我总是指A部分,它不包括将数据加载到内存中的时间,实际上与它无关):该程序在Docker容器内的服务器上运行。但是我已经能够在没有容器的情况下在我的笔记本电脑上重现它:与在内存中没有加载文件数据的情况下运

postgresql - 使用 GORM 和 Postgresql 如何设置搜索路径?

如何从gorm获取当前模式?通常它是“SHOWsearch_path”并且是一个exec。与设置当前search_path通常“将search_path设置为newschema”相同。其中新架构可以是一系列名称中的单个架构名称。我尝试了db.Exec("showsearch_path").Find(&result),其中结果是一个[]string,我得到一个空数组。 最佳答案 通过执行类似setsearch_pathtonewschema的查询来设置search_path是不正确的设置方式,因为这只会对用于执行查询的连接进行更改。要

postgresql - GoLang 服务无法使用 docker compose 访问 Postgres

我有一个用Go编写的HTML服务。它使用Postgres,但是当使用dockercompose将它们组合在一起时,我得到“dialtcp0.0.0.0:5432:connect:connectionrefused”在仅使用docker并引用Postgres的运行图像构建启动服务时工作来自go的调用片段psqlInfo:=fmt.Sprintf("host=%sport=%suser=%spassword=%sdbname=%ssslmode=disable",host,port,user,password,dbname)db,err:=sql.Open("postgres",psqlI

performance - Go - 在用于负载测试的高性能 http 客户端中,如何阻止/忽略所有 cookie?

我正在为我的公司创建工具来对我们的系统进行负载测试。我目前有用Python编写的工具,但我正在探索使用Go的选项,希望提高效率和性能,因为我们需要同时生成数百万用户(每个盒子有数千个,有很多盒子)并且每一点都很重要。我的用户主要对我们的系统进行http调用,我需要一个非常轻量级和高效的http客户端。对于我们的Python工具,以前的员工有一些功能手动处理和重用套接字并完全忽略cookie。虽然我是Go的新手,但到目前为止我已经比较了多个Go网络实现,我对CPU和网络使用情况很满意,所以我认为我还不需要手动管理套接字,但是RAM使用率比我们的Python解决方案高出数倍。我怀疑这是由于

postgresql - 关联表中的 gorm many2many 和附加字段

我有一个many2many关联(它用于返回JSON)。它在模型中声明://models/school.gotypeSchoolstruct{IDint`gorm:"primary_key"`Namestring`gorm:"notnull"`Accreditations[]Accreditation`gorm:"many2many:school_accreditation;"`}效果很好。我在json中返回了关联。问题是我在school_accreditation表中有一个附加字段,但它未包含在响应中。我已经尝试像thisanswer中提议的那样为协会声明一个模型://models/s

postgresql - GORM 数据库中的自动迁移将不需要的字段添加到 SQL 表

当我在gorm数据库中创建表时,它向表中添加了我不需要的列。我不确定它是如何添加这些额外字段的。这导致我遇到一个错误,“pq:列“user_id”中的空值违反了非空约束”。“user_id”是添加的不需要的列。我正在使用gorm和postgreSQL。我的两个表之间存在多对多关系。我的第一个表已正确创建,第二个表stores是使用提供的字段加上两个不需要的字段创建的:“user_id”和“stores_id”。我尝试删除多对多关系以查看是否是问题所在,我尝试删除表并使用不同的字段重新创建它们。无论如何,我都无法摆脱这两个额外的列。第一个(工作)表:typeUserstruct{gorm

postgresql - 如何在 gorm 中为 Association 请求主体属于并拥有一个

IhavePeopleandData,其中People有一个Dataand数据属于人如何在gogin中为该协会发出请求正文JSON?我在这种情况下使用gorm,对于这种情况,我不清楚gorm的文档,我应该像funcCreateTodo(db*gorm.DB)func(c*gin.Context){varpersonPersonvardataDatac.bindJSON(&Person)c.bindJSON(&Data)db.create(&Person)db.create(&Data)c.JSON(200,gin.H{result:[]interface{person,data})}t