Skip to content

Commit 6394e58

Browse files
authored
fix: optimize sql query used for the signer_state_count metric (#73)
1 parent 93341b7 commit 6394e58

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/pg/pg-store.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -923,6 +923,7 @@ export class PgStore extends BasePgStore {
923923
recent_blocks AS (
924924
SELECT
925925
bp.block_hash,
926+
bp.received_at,
926927
ROW_NUMBER() OVER (ORDER BY bp.received_at DESC) AS row_num
927928
FROM block_proposals bp
928929
ORDER BY bp.received_at DESC
@@ -938,15 +939,19 @@ export class PgStore extends BasePgStore {
938939
JOIN recent_blocks rb
939940
ON rb.row_num <= br.range_value
940941
),
942+
-- Filter block_responses with a received_at older than the oldest recent_blocks timestamp
943+
block_responses_after AS (
944+
SELECT * FROM block_responses br
945+
WHERE br.received_at >= (
946+
SELECT MIN(received_at) - INTERVAL '1 hour' FROM recent_blocks
947+
)
948+
),
949+
-- Filter block_responses with hashes not included in recent_blocks, or with signer_keys not included in this cycle
941950
relevant_responses AS (
942-
-- Pre-filter block_responses to only those relevant to recent_blocks and signer_keys
943-
SELECT
944-
br.signer_key,
945-
br.signer_sighash,
946-
br.accepted
947-
FROM block_responses br
948-
WHERE br.signer_sighash IN (SELECT block_hash FROM recent_blocks)
949-
AND br.signer_key IN (SELECT signer_key FROM signer_keys)
951+
SELECT br.signer_key, br.signer_sighash, br.accepted
952+
FROM block_responses_after br
953+
JOIN recent_blocks rb ON br.signer_sighash = rb.block_hash
954+
JOIN signer_keys sk ON br.signer_key = sk.signer_key
950955
),
951956
responses_with_states AS (
952957
SELECT

0 commit comments

Comments
 (0)