matrix-org / synapse

Synapse: Matrix homeserver written in Python/Twisted.
https://matrix-org.github.io/synapse
Apache License 2.0
11.82k stars 2.13k forks source link

Improve the performance of fetching event reports over the admin API when there are many of them and the requester has paginated far down the list. #16620

Open reivilibre opened 11 months ago

reivilibre commented 11 months ago

Partial fix to #16619

General idea: defer the join to events until after the offset has been applied. It's hard to get an unbiased measurement for this, but the old query took ~3s and the new query took ~500ms for a given query (identical results).

It'd be nicer to add proper indices and defer the other join too (and even change the pagination scheme to not use OFFSET), but this is all I had for a drive-by improvement.

Base: develop

Original commit schedule, with full messages:

  1. Improve performance of fetching event reports when there are many of them
DMRobertson commented 11 months ago

What do the query plans look like before and after, OOI?