-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
opt: performance regression on April 21st #64214
Comments
Wow.. thanks for tracking this down! I think we are missing special logic when the memo is determined to be "stale". |
@erikgrinaker for how long did you run the benchmarks? It must have been more than a minute if it slows down after that? |
roachtest usually runs 10 minute intervals, which is also what you can see in the above graph |
Just did |
Thanks. I understand the issue now. The problem is that we are using the statistics that are derived using placeholders, which are bogus. Once we have stats, our estimated row count is very large, and that affects the way the query is being executed.
|
This change is best explained by this comment: ``` // We are dealing with a memo that still contains placeholders. The statistics // for such a memo can be wildly overestimated. Even if our plan is correct, // the estimated row count for a scan is passed to the execution engine which // uses it to make sizing decisions. Passing a very high count can affect // performance significantly (see cockroachdb#64214). So we only use the fast path if the // estimated row count is small; typically this will happen when we constrain // columns that form a key and we know there will be at most one row. ``` Fixes cockroachdb#64214. Release note (bug fix): fixed a performance regression for very simple queries.
64225: opt: make placeholder fast path conditional on the estimated row count r=RaduBerinde a=RaduBerinde #### opt: show statistics in placeholder-fast-path tests This highlights a problem with the fast path: we use statistics that are derived using placeholders, which are usually terrible. Release note: None #### opt: mark columns as constant for equality with placeholder This commit improves the FD generation for Select when we have filters like `x = $1`. Because these filters have placeholders, they do not generate constraints (which is the normal mechanism for detecting constant columns). This improves the cardinality property and row count estimate. The estimate will be used for the placeholder fast path. Release note: None #### opt: make placeholder fast path conditional on the estimated row count This change is best explained by this comment: ``` // We are dealing with a memo that still contains placeholders. The statistics // for such a memo can be wildly overestimated. Even if our plan is correct, // the estimated row count for a scan is passed to the execution engine which // uses it to make sizing decisions. Passing a very high count can affect // performance significantly (see #64214). So we only use the fast path if the // estimated row count is small; typically this will happen when we constrain // columns that form a key and we know there will be at most one row. ``` Fixes #64214. Release note (bug fix): fixed a performance regression for very simple queries. 64229: sql: add CREATE STATISTICS regression test r=mgartner a=mgartner This is a "forward-port" of regression tests from #64226. This commit contains no code changes because the bug was already been fixed on master by #59687. Release note: None 64235: roachtest: update version map and fixtures r=darinpp a=darinpp This commit adds the recently released 20.1.15 to the version map in PredecessorVersion. Release note: None (testing change) Co-authored-by: Radu Berinde <[email protected]> Co-authored-by: Marcus Gartner <[email protected]> Co-authored-by: Darin Peshev <[email protected]>
roachperf graphs are showing a performance regression across the board on April 21st, e.g.:
Verified this to be caused by #63807, benchmarks of 22e4d64 (old) vs df67aa9 (new):
Notice how the new April 21st graph shows a clear improvement from the start, but then slows down after about a minute to a level significantly below the old April 19th baseline. Statistics collection would be a likely cause for the abrupt change.
/cc @cockroachdb/test-eng
The text was updated successfully, but these errors were encountered: