diff --git a/data/data.go b/data/data.go
index 537ffe0..8eded28 100644
--- a/data/data.go
+++ b/data/data.go
@@ -63,6 +63,18 @@
 	return d.db.Ping()
 }
 
+func (d *ApidDb) SetMaxIdleConns(n int) {
+	 d.db.SetMaxIdleConns(n)
+}
+
+func (d *ApidDb) SetMaxOpenConns(n int) {
+	d.db.SetMaxOpenConns(n)
+}
+
+func (d *ApidDb) SetConnMaxLifetime(du time.Duration) {
+	d.db.SetConnMaxLifetime(du)
+}
+
 func (d *ApidDb) Prepare(query string) (*sql.Stmt, error) {
 	return d.db.Prepare(query)
 }
@@ -83,6 +95,7 @@
 	d.mutex.Lock()
 	tx, err := d.db.Begin()
 	if err != nil {
+		d.mutex.Unlock()
 		return nil, err
 	}
 	return &Tx{
diff --git a/data/data_test.go b/data/data_test.go
index 71dfb26..f17511b 100644
--- a/data/data_test.go
+++ b/data/data_test.go
@@ -26,7 +26,7 @@
 )
 
 const (
-	count    = 5000
+	count    = 500
 	setupSql = `
 		CREATE TABLE test_1 (id INTEGER PRIMARY KEY, counter TEXT);
 		CREATE TABLE test_2 (id INTEGER PRIMARY KEY, counter TEXT);`
@@ -48,7 +48,6 @@
 		_, err = apid.Data().DBVersionForID("common", "base")
 		Expect(err).To(HaveOccurred())
 	})
-
 	It("should be able to change versions of a datbase", func() {
 		var versions []string
 		var dbs []apid.DB
@@ -82,8 +81,10 @@
 		Expect(data.DBPath(id)).ShouldNot(BeAnExistingFile())
 	})
 
-	It("should handle concurrent read & serialized write", func() {
+	It("should handle concurrent read & serialized write, and throttle", func() {
 		db, err := apid.Data().DBForID("test")
+		db.SetMaxOpenConns(10)
+		db.SetMaxIdleConns(10)
 		Expect(err).NotTo(HaveOccurred())
 		setup(db)
 		finished := make(chan bool, count+1)
@@ -104,11 +105,15 @@
 
 		for i := 0; i < count+1; i++ {
 			<-finished
+			// Since conns are shared, will always be <= 10
+			Expect(db.Stats().OpenConnections).Should(BeNumerically("<=", 10))
 		}
 	}, 10)
 
 	It("should handle concurrent write", func() {
 		db, err := apid.Data().DBForID("test_write")
+		db.SetMaxOpenConns(10)
+		db.SetMaxIdleConns(10)
 		Expect(err).NotTo(HaveOccurred())
 		setup(db)
 		finished := make(chan bool, count)
@@ -122,6 +127,8 @@
 
 		for i := 0; i < count; i++ {
 			<-finished
+			// Only one connection should get opened, as connections are serialized.
+			Expect(db.Stats().OpenConnections).To(Equal(1))
 		}
 	}, 10)
 })
diff --git a/data_service.go b/data_service.go
index c606e10..355566d 100644
--- a/data_service.go
+++ b/data_service.go
@@ -17,6 +17,7 @@
 import (
 	"context"
 	"database/sql"
+	"time"
 )
 
 type DataService interface {
@@ -40,6 +41,9 @@
 	QueryRow(query string, args ...interface{}) *sql.Row
 	Begin() (Tx, error)
 	Stats() sql.DBStats
+	SetConnMaxLifetime(d time.Duration)
+	SetMaxIdleConns(n int)
+	SetMaxOpenConns(n int)
 	//Close() error
 	//Stats() sql.DBStats
 	//Driver() driver.Driver
