mirror of
https://github.com/golang/go
synced 2024-11-19 09:44:46 -07:00
database/sql: provide stats on number of open connections to the database.
This change provides a convenient way to monitor database connection pool. Change-Id: I4b3757855b43f3b254acf9312e2a16e2f87840d0 Reviewed-on: https://go-review.googlesource.com/7950 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
9d0239771a
commit
297c1d297f
@ -572,6 +572,22 @@ func (db *DB) SetMaxOpenConns(n int) {
|
||||
}
|
||||
}
|
||||
|
||||
// DBStats contains database statistics.
|
||||
type DBStats struct {
|
||||
// OpenConnections is the number of open connections to the database.
|
||||
OpenConnections int
|
||||
}
|
||||
|
||||
// Stats returns database statistics.
|
||||
func (db *DB) Stats() DBStats {
|
||||
db.mu.Lock()
|
||||
stats := DBStats{
|
||||
OpenConnections: db.numOpen,
|
||||
}
|
||||
db.mu.Unlock()
|
||||
return stats
|
||||
}
|
||||
|
||||
// Assumes db.mu is locked.
|
||||
// If there are connRequests and the connection limit hasn't been reached,
|
||||
// then tell the connectionOpener to open new connections.
|
||||
|
@ -1093,6 +1093,26 @@ func TestSingleOpenConn(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestStats(t *testing.T) {
|
||||
db := newTestDB(t, "people")
|
||||
stats := db.Stats()
|
||||
if got := stats.OpenConnections; got != 1 {
|
||||
t.Errorf("stats.OpenConnections = %d; want 1", got)
|
||||
}
|
||||
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
tx.Commit()
|
||||
|
||||
closeDB(t, db)
|
||||
stats = db.Stats()
|
||||
if got := stats.OpenConnections; got != 0 {
|
||||
t.Errorf("stats.OpenConnections = %d; want 0", got)
|
||||
}
|
||||
}
|
||||
|
||||
// golang.org/issue/5323
|
||||
func TestStmtCloseDeps(t *testing.T) {
|
||||
if testing.Short() {
|
||||
|
Loading…
Reference in New Issue
Block a user