Commit 8126d0b
committed
Skip redundant prefix pre-check for point reads when whole_key_filtering is enabled
When whole_key_filtering is true (the default), the filter contains
full-key hashes. For point reads, the full-key Bloom is strictly more
precise than the prefix pre-check — so skip the prefix probe entirely
and go straight to the Bloom. This eliminates a redundant filter probe
on every point read that was costing ~10% throughput on point-read-heavy
workloads.
The prefix filter now only activates for range/prefix scans, where it
provides table-level pruning that the full-key Bloom cannot.
When whole_key_filtering is false, point reads still use the prefix
filter as the sole pre-check since no full-key hashes are available.
Feed workload (point-read heavy):
- Before: -9.5% regression vs no prefix extractor
- After: +7.7% improvement vs no prefix extractor, -69.6% disk reads
Column store (scan-only): +4.7% improvement, consistent with previous1 parent c811f8b commit 8126d0b
1 file changed
Lines changed: 22 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
872 | 872 | | |
873 | 873 | | |
874 | 874 | | |
875 | | - | |
876 | | - | |
877 | | - | |
878 | | - | |
879 | | - | |
880 | | - | |
881 | | - | |
882 | | - | |
883 | | - | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
884 | 886 | | |
885 | | - | |
886 | 887 | | |
887 | | - | |
| 888 | + | |
888 | 889 | | |
889 | | - | |
| 890 | + | |
890 | 891 | | |
891 | 892 | | |
892 | | - | |
893 | | - | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
894 | 902 | | |
895 | | - | |
896 | | - | |
897 | | - | |
898 | | - | |
899 | | - | |
900 | | - | |
901 | 903 | | |
902 | 904 | | |
903 | 905 | | |
| |||
0 commit comments