diff options
| author | Jonathan Amsterdam <jba@google.com> | 2020-06-03 13:15:58 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2020-06-04 13:31:22 +0000 |
| commit | 5d82fbe1c8532d03e2313d97fb03b7d424b3d481 (patch) | |
| tree | 9298bf66a954235c6ba8b0658901eda8a1144625 /internal/database/database_test.go | |
| parent | 01d5985063f47f3f8890d77d743ba9d54485e4eb (diff) | |
| download | go-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.go | 7 |
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) |
