// Use Write Mode: read user from sources `db1` db.Clauses(dbresolver.Write).First(&user)
// Specify Resolver: read user from `secondary`'s replicas: db8 db.Clauses(dbresolver.Use("secondary")).First(&user)
// Specify Resolver and Write Mode: read user from `secondary`'s sources: db6 or db7 db.Clauses(dbresolver.Use("secondary"), dbresolver.Write).First(&user)
交易
使用交易時,DBResolver 會持續使用交易,不會根據設定切換至來源/複製品
但是,您可以在開始交易前指定要使用的資料庫,例如
// Start transaction based on default replicas db tx := db.Clauses(dbresolver.Read).Begin()
// Start transaction based on default sources db tx := db.Clauses(dbresolver.Write).Begin()
// Start transaction based on `secondary`'s sources tx := db.Clauses(dbresolver.Use("secondary"), dbresolver.Write).Begin()
負載平衡
GORM 支援根據政策對來源/複製品進行負載平衡,政策應該是實作下列介面的結構
type Policy interface { Resolve([]gorm.ConnPool) gorm.ConnPool }