Skip to content

Q: Evaluation cost of hll_empty() #157

@samkillin

Description

@samkillin

I am looking to "upsert" hll's in my database, using a traditional two stage query:

# Add an empty HLL if one doesn't exist
INSERT INTO counts(event_type, reference, count) 
VALUES(:event_type, :reference, hll_empty()) 
ON CONFLICT DO NOTHING; 

# Add to the HLL
UPDATE counts 
SET count = hll_add(count, hll_hash_text(:event_id)) 
WHERE event_type = :event_type AND reference = :reference;

Given hll_empty() will be invoked on every query, even in the update case (i.e. before a conflict is identified), how cheap/expensive is that function to execute? The README mentions use of a sentinel value – is this sentinel value recalculated every call?

Should I be concerned with the evaluation of that function being a potential bottleneck compared to hll_add and hll_hash_text?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions