Open cyanfish opened 2 years ago
there is potential for a 3x speedup over mutliple parallel getAll calls
Is the base version using a single transaction with three getAll requests or three separate transactions?
The test I'm referring to used a single transaction with N getAll requests in parallel vs 1 prototype batchGetAll call with N ranges. N=100 to N=100k were tested.
Currently the only way to query a set of individual rows by key is to use repeated calls to
get
orgetAll
. We have some use cases where we want to query many keys with one row each (e.g. the equivalent of SQLWHERE id IN (1,3,9,...)
), where the event loop potentially adds quite a bit of overhead.Another option would be to add a batch method for
get
and/orgetAll
, for example:Which would return an array of arrays corresponding to the input array.
The Chrome team did some internal prototyping and found that in the best case (1 row per key) there is potential for a 3x speedup over mutliple parallel getAll calls. That hasn't been proven in real world use cases yet and it's unclear if other browsers would see the same improvements, but that would be a significant speedup that can't be replicated with the current APIs.