aboutsummaryrefslogtreecommitdiff
path: root/internal/database/database_test.go
diff options
context:
space:
mode:
authorJonathan Amsterdam <jba@google.com>2020-06-03 13:15:58 -0400
committerJonathan Amsterdam <jba@google.com>2020-06-04 13:31:22 +0000
commit5d82fbe1c8532d03e2313d97fb03b7d424b3d481 (patch)
tree9298bf66a954235c6ba8b0658901eda8a1144625 /internal/database/database_test.go
parent01d5985063f47f3f8890d77d743ba9d54485e4eb (diff)
downloadgo-x-pkgsite-5d82fbe1c8532d03e2313d97fb03b7d424b3d481.tar.xz
internal/database: use prepared statement for BulkInsert
Using a prepared statement for the query seems to speed up an insert significantly. Change-Id: I32a1455b376e08fb435b2e756aa8df4b0c2bc1b3 Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/761661 CI-Result: Cloud Build <devtools-proctor-result-processor@system.gserviceaccount.com> Reviewed-by: Julie Qiu <julieqiu@google.com>
Diffstat (limited to 'internal/database/database_test.go')
-rw-r--r--internal/database/database_test.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/internal/database/database_test.go b/internal/database/database_test.go
index 935b6707..59e6a82b 100644
--- a/internal/database/database_test.go
+++ b/internal/database/database_test.go
@@ -188,16 +188,23 @@ func TestLargeBulkInsert(t *testing.T) {
if _, err := testDB.Exec(ctx, `CREATE TEMPORARY TABLE test_large_bulk (i BIGINT);`); err != nil {
t.Fatal(err)
}
+ defer func(q bool) {
+ QueryLoggingDisabled = q
+ }(QueryLoggingDisabled)
+ QueryLoggingDisabled = true
+
const size = 150000
vals := make([]interface{}, size)
for i := 0; i < size; i++ {
vals[i] = i + 1
}
+ start := time.Now()
if err := testDB.Transact(ctx, sql.LevelDefault, func(db *DB) error {
return db.BulkInsert(ctx, "test_large_bulk", []string{"i"}, vals, "")
}); err != nil {
t.Fatal(err)
}
+ t.Logf("large bulk insert took %s", time.Since(start))
rows, err := testDB.Query(ctx, `SELECT i FROM test_large_bulk;`)
if err != nil {
t.Fatal(err)