1
0
Fork 0

Add low-level DB expvar stats

master
Philip O'Toole 8 years ago
parent c3b3f92804
commit 48f7bb2c50

@ -4,6 +4,7 @@ package db
import (
"database/sql/driver"
"expvar"
"fmt"
"io"
"time"
@ -17,13 +18,24 @@ const (
fkChecks = "PRAGMA foreign_keys"
fkChecksEnabled = "PRAGMA foreign_keys=ON"
fkChecksDisabled = "PRAGMA foreign_keys=OFF"
numExecutions = "executions"
numQueries = "queries"
numTransactions = "transactions"
)
// DBVersion is the SQLite version.
var DBVersion string
// stats captures stats for the DB layer.
var stats *expvar.Map
func init() {
DBVersion, _, _ = sqlite3.Version()
stats = expvar.NewMap("db")
stats.Add(numExecutions, 0)
stats.Add(numQueries, 0)
stats.Add(numTransactions, 0)
}
// DB is the SQL database.
@ -161,6 +173,9 @@ func (db *DB) FKConstraints() (bool, error) {
// Execute executes queries that modify the database.
func (db *DB) Execute(queries []string, tx, xTime bool) ([]*Result, error) {
stats.Add(numQueries, 1)
stats.Add(numExecutions, int64(len(queries)))
type Execer interface {
Exec(query string, args []driver.Value) (driver.Result, error)
}
@ -254,6 +269,8 @@ func (db *DB) Execute(queries []string, tx, xTime bool) ([]*Result, error) {
// Query executes queries that return rows, but don't modify the database.
func (db *DB) Query(queries []string, tx, xTime bool) ([]*Rows, error) {
stats.Add(numQueries, int64(len(queries)))
type Queryer interface {
Query(query string, args []driver.Value) (driver.Rows, error)
}

Loading…
Cancel
Save