Production 1-query timing estimator (R&D phase)

Goal

As a user of DLE and/or Joe bot, I want to see a timing estimate for production.

Why: Depending on configuration, resources, and state of caches, DLE can execute queries significantly longer than production Postgres.

TODO / How to implement

  • we need to provide 2 numbers always, for cold and hot cache state. (Display as a range: Production timing estimate: XX-YY ms)
  • exec (DDL): count buffers read and written (either using /proc/... or pg_stat_database), and based on those numbers and knowledge about prod, provide ...
  • explain: ...
  • how do we "learn" how production behaves? (calibration)
  • should we provide "error" in addition to estimate?

Acceptance criteria

  • Joe users see production timing estimate for both explain and exec. Questions to finalize:
  • UI: wording, put it into the summary
  • Are we going to show wait_even_type histogram right now? For every Joe's response?
  • (implementation) which event types do we need to involve in the formula?
  • DOCUMENTATION docs#42 (closed)
  • link to "how it works" (users should be able to find it easily: look at Summary -> think "how" -> go read the doc)
  • DLE users – ??? (option: CI observer also provides estimates for ???)
Edited by Artyom Kartasov