6.7 KiB
6.7 KiB
ProofChain schema performance report (2025-12-17)
Environment
- Postgres image:
postgres:16 - DB:
proofchain_perf - Port:
54329 - Host:
localhost
Dataset
- Source:
src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Perf/seed.sql - Rows:
trust_anchors: 50sbom_entries: 20000dsse_envelopes: 60000spines: 20000rekor_entries: 2000
Query Output
Timing is on.
trust_anchors | sbom_entries | dsse_envelopes | spines | rekor_entries
---------------+--------------+----------------+--------+---------------
50 | 20000 | 60000 | 20000 | 2000
(1 row)
Time: 18.788 ms
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Index Scan using uq_sbom_entry on sbom_entries (cost=0.41..8.44 rows=1 width=226) (actual time=0.024..0.024 rows=1 loops=1)
Index Cond: (((bom_digest)::text = 'd2cb2e2d7955252437da988dd4484f1dfcde81750ce0175d9fb9a85134a8de9a'::text) AND (purl = format('pkg:npm/vendor-%02s/pkg-%05s'::text, 1, 1)) AND (version = '1.0.1'::text))
Buffers: shared hit=4
Planning:
Buffers: shared hit=24
Planning Time: 0.431 ms
Execution Time: 0.032 ms
(7 rows)
Time: 1.119 ms
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=173.99..174.13 rows=56 width=80) (actual time=0.331..0.340 rows=100 loops=1)
Buffers: shared hit=8
-> Sort (cost=173.99..174.13 rows=56 width=80) (actual time=0.330..0.335 rows=100 loops=1)
Sort Key: purl
Sort Method: quicksort Memory: 38kB
Buffers: shared hit=8
-> Bitmap Heap Scan on sbom_entries (cost=4.72..172.37 rows=56 width=80) (actual time=0.019..0.032 rows=100 loops=1)
Recheck Cond: ((bom_digest)::text = 'd2cb2e2d7955252437da988dd4484f1dfcde81750ce0175d9fb9a85134a8de9a'::text)
Heap Blocks: exact=3
Buffers: shared hit=5
-> Bitmap Index Scan on idx_sbom_entries_bom_digest (cost=0.00..4.71 rows=56 width=0) (actual time=0.015..0.015 rows=100 loops=1)
Index Cond: ((bom_digest)::text = 'd2cb2e2d7955252437da988dd4484f1dfcde81750ce0175d9fb9a85134a8de9a'::text)
Buffers: shared hit=2
Planning:
Buffers: shared hit=12 read=1
Planning Time: 0.149 ms
Execution Time: 0.355 ms
(17 rows)
Time: 0.867 ms
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------
Index Scan using idx_dsse_entry_predicate on dsse_envelopes (cost=0.41..8.43 rows=1 width=226) (actual time=0.008..0.009 rows=1 loops=1)
Index Cond: ((entry_id = '924258f2-921e-9694-13a4-400abfdf00d6'::uuid) AND (predicate_type = 'evidence.stella/v1'::text))
Buffers: shared hit=4
Planning:
Buffers: shared hit=23
Planning Time: 0.150 ms
Execution Time: 0.014 ms
(7 rows)
Time: 0.388 ms
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------
Index Scan using idx_spines_bundle on spines (cost=0.41..8.43 rows=1 width=194) (actual time=0.016..0.017 rows=1 loops=1)
Index Cond: ((bundle_id)::text = '2f9ef44d93b4520b2296d5b73bd1cc87156a304c757feb4c78926452db61abf8'::text)
Buffers: shared hit=4
Planning Time: 0.096 ms
Execution Time: 0.025 ms
(5 rows)
Time: 0.318 ms
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on rekor_entries (cost=4.34..27.60 rows=8 width=186) (actual time=0.024..0.024 rows=0 loops=1)
Recheck Cond: (log_index = 10)
Buffers: shared hit=5
-> Bitmap Index Scan on idx_rekor_log_index (cost=0.00..4.34 rows=8 width=0) (actual time=0.023..0.023 rows=0 loops=1)
Index Cond: (log_index = 10)
Buffers: shared hit=5
Planning:
Buffers: shared hit=5
Planning Time: 0.097 ms
Execution Time: 0.040 ms
(10 rows)
Time: 0.335 ms
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=637.30..637.30 rows=1 width=226) (actual time=0.649..0.660 rows=100 loops=1)
Buffers: shared hit=405
-> Sort (cost=637.30..637.30 rows=1 width=226) (actual time=0.648..0.653 rows=100 loops=1)
Sort Key: e.purl
Sort Method: quicksort Memory: 50kB
Buffers: shared hit=405
-> Nested Loop (cost=5.13..637.29 rows=1 width=226) (actual time=0.074..0.385 rows=100 loops=1)
Buffers: shared hit=405
-> Bitmap Heap Scan on sbom_entries e (cost=4.72..172.37 rows=56 width=48) (actual time=0.061..0.071 rows=100 loops=1)
Recheck Cond: ((bom_digest)::text = 'd2cb2e2d7955252437da988dd4484f1dfcde81750ce0175d9fb9a85134a8de9a'::text)
Heap Blocks: exact=3
Buffers: shared hit=5
-> Bitmap Index Scan on idx_sbom_entries_bom_digest (cost=0.00..4.71 rows=56 width=0) (actual time=0.057..0.057 rows=100 loops=1)
Index Cond: ((bom_digest)::text = 'd2cb2e2d7955252437da988dd4484f1dfcde81750ce0175d9fb9a85134a8de9a'::text)
Buffers: shared hit=2
-> Index Scan using idx_dsse_entry_predicate on dsse_envelopes d (cost=0.41..8.29 rows=1 width=194) (actual time=0.003..0.003 rows=1 loops=100)
Index Cond: ((entry_id = e.entry_id) AND (predicate_type = 'evidence.stella/v1'::text))
Buffers: shared hit=400
Planning:
Buffers: shared hit=114
Planning Time: 0.469 ms
Execution Time: 0.691 ms
(22 rows)
Time: 1.643 ms