You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am looking to "upsert" hll's in my database, using a traditional two stage query:
# Add an empty HLL if one doesn't existINSERT INTO counts(event_type, reference, count)
VALUES(:event_type, :reference, hll_empty())
ON CONFLICT DO NOTHING;
# Add to the HLLUPDATE 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?
The text was updated successfully, but these errors were encountered:
Looking at the code, hll_empty() in fact creates an empty set (internally represented as a byte array) at every call. So it does not use a precalculated sentinel.
I am looking to "upsert"
hll
's in my database, using a traditional two stage query: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
andhll_hash_text
?The text was updated successfully, but these errors were encountered: