From 06281b5ccb942035d7559cb01512d0426c946fb9 Mon Sep 17 00:00:00 2001 From: Livio Amstutz Date: Thu, 22 Apr 2021 17:06:23 +0200 Subject: [PATCH] fix: improve performance on db insert (#1649) --- internal/eventstore/repository/sql/crdb.go | 5 ++--- migrations/cockroach/V1.41__index_max_seq.sql | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 migrations/cockroach/V1.41__index_max_seq.sql diff --git a/internal/eventstore/repository/sql/crdb.go b/internal/eventstore/repository/sql/crdb.go index 6d3253b4a..7d1a18f56 100644 --- a/internal/eventstore/repository/sql/crdb.go +++ b/internal/eventstore/repository/sql/crdb.go @@ -37,10 +37,9 @@ const ( //previous_data selects the needed data of the latest event of the aggregate // and buffers it (crdb inmemory) " WITH previous_data AS (" + - " SELECT MAX(event_sequence) AS seq, resource_owner " + + " SELECT event_sequence AS seq, resource_owner " + " FROM eventstore.events " + - //TODO: remove LIMIT 1 / order by as soon as data cleaned up (only 1 resource_owner per aggregate) - " WHERE aggregate_type = $2 AND aggregate_id = $3 GROUP BY resource_owner order by seq desc LIMIT 1" + + " WHERE aggregate_type = $2 AND aggregate_id = $3 ORDER BY seq DESC LIMIT 1" + " )" + // defines the data to be inserted " SELECT " + diff --git a/migrations/cockroach/V1.41__index_max_seq.sql b/migrations/cockroach/V1.41__index_max_seq.sql new file mode 100644 index 000000000..ce6916592 --- /dev/null +++ b/migrations/cockroach/V1.41__index_max_seq.sql @@ -0,0 +1,2 @@ +use eventstore; +CREATE INDEX IF NOT EXISTS max_sequence on eventstore.events (aggregate_type, aggregate_id, event_sequence DESC);