提升 go 框架中数据库访问特性的方式:应用 orm(对象关系投射)架构:简化数据库访问,清除撰写冗杂 sql 查询和处置结果集的必须。缓存查询记录:减少对数据库启用频次,提高性能。应用预编译句子:提高性能,防止 sql 查看的解析和编译。应用连接池:管理到数据库的连接,防止经常创建和关掉联接。 内容来自zvvq,别采集哟
内容来自samhan666
Go 框架中数据库访问的性能优化使用 Go 架构开展数据库访问时,提升特性尤为重要。本文将讨论提升数据库访问特性的一些合理技术,并提供一个实战案例。
应用 ORM对象关系投射(ORM)架构以在 Go 对象和数据库表中间创建一个抽象层来简化数据库访问。这规避了撰写冗长的 SQL 查询和处置结果集的必须。一些流行的 Go ORM架构包含: 本文来自zvvq
[GORM](https://github.com/jinzhu/gorm) [XORM](https://github.com/go-xorm/xorm) [Beego ORM](https://github.com/astaxie/beego/wiki/Models)缓存查询记录缓存查询记录能够明显减少对数据库启用频次,进而提高性能。Go 含有多个缓存库,比如: zvvq.cn
[GoCache](https://github.com/pmylund/go-cache)[TinyCache](https://github.com/sethvargo/go-tinycache)[LRU](https://github.com/hashicorp/golang-lru)预编译句子预编译语句能够在运行时防止 SQL 查看的解析和编译,进而提高性能。Go 里的 database/sql 包带来了 Prepare 函数,容许预编译句子并多次重复应用:
本文来自zvvq
packagemain
import(
copyright zvvq
"database/sql" 内容来自zvvq
)
内容来自samhan666
funcmain(){ 内容来自samhan
db,err:=sql.Open("postgres","host=localhostuser=userpassword=passworddbname=mydb") zvvq.cn
iferr!=nil{
内容来自zvvq,别采集哟
panic(err)
zvvq好,好zvvq
}
stmt,err:=db.Prepare("SELECTFROMusersWHEREid=?")
内容来自zvvq,别采集哟
iferr!=nil{ 内容来自samhan666
panic(err) 内容来自samhan
}
内容来自zvvq
// 稍候使用该预编译句子,传送不同参数值
}
应用连接池连接池管理到数据库的连接,防止频繁地创建和关掉联接。Go 里的 database/sql 包带来了内置的连接池: 内容来自zvvq,别采集哟
packagemain
内容来自zvvq
import(
"database/sql"
) 本文来自zvvq
funcmain(){
db,err:=sql.Open("postgres","host=localhostuser=userpassword=passworddbname=mydb") zvvq
iferr!=nil{ zvvq.cn
panic(err)
内容来自samhan
}
db.SetMaxOpenConns(10)//设定较大开启连接数
zvvq.cn
db.SetMaxIdleConns(5) // 设定较大空余连接数 zvvq好,好zvvq
// 使用数据库
}
实战案例应用 GORM 和连接池提升特性 zvvq
考虑一个应用 GORM ORM框架的情景,我们希望提升从数据库检索客户性能。
zvvq好,好zvvq
packagemain
import(
"time" 内容来自samhan666
"github.com/jinzhu/gorm" zvvq.cn
)
本文来自zvvq
typeUserstruct{
本文来自zvvq
IDuint`gorm:"primary_key"`
Usernamestring 内容来自zvvq
Passwordstring
zvvq.cn
CreatedAttime.Time
zvvq好,好zvvq
UpdatedAttime.Time 本文来自zvvq
}
funcmain(){ 内容来自samhan
db,err:=gorm.Open("postgres","host=localhostuser=userpassword=passworddbname=mydb") 内容来自zvvq
iferr!=nil{
zvvq.cn
panic(err) 内容来自samhan
}
db.SetMaxOpenConns(10) zvvq好,好zvvq
db.SetMaxIdleConns(5)
// ...
本文来自zvvq
}
根据使用 GORM 的 ORM 作用,大家能够轻松执行查询,解决结果集,同时通过应用连接池,大家防止了频繁地联接创建和关掉,从而提高特性。 zvvq.cn
以上就是golang框架中数据库访问的性能优化的详细内容,大量请关注其他类似文章!