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