From 5d82fbe1c8532d03e2313d97fb03b7d424b3d481 Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Wed, 3 Jun 2020 13:15:58 -0400 Subject: 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 Reviewed-by: Julie Qiu --- internal/database/database_test.go | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'internal/database/database_test.go') 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) -- cgit v1.3