Notes

  • Our design focus was on approachability — the analyze output should be readable by non-DBAs.
  • The output must be mappable onto the source query clearly, helping users to understand what exact part of their query is fast or slow.
  • We have amazing, best in class, graphical UI for explain and a very good CLI rendering.
  • A 2-4 minute demo of terminal UI, followed by graphical UI.

Outline

  • Glad you could join us today for our launch of EdgeDB 3.0!
  • Introduction
  • Try to help you be more successful with EdgeDB, and I try to help steer our development to make EdgeDB work better for you.
  • We’re a team of developers, focused on making the best database for developers.
  • Introduce you to our new query performance analysis tool that ships with 3.0 to help you make your queries more performant
  • Show bare query in CLI REPL
  • Add analyze to do performance analysis
  • Our goal was to build performance analysis that’s readable even if you’re not a DBA
  • Show query in CLI REPL
  • This is a plain-Jane EdgeQL query. All I’ve done is added this analyze keyword in front of it.
  • Show query part labels
  • We wanted to make sure the output could easily be correlated to the query, so we’ve numbered parts of the query and corresponding output so you can see which parts you should focus on.
  • Correlating output to your query is even easier if you pull this into our UI
  • Run edgedb ui
  • Go into the query editor
  • You can also use analyze in the new Web REPL to get a flame chart, but the query editor allows you to switch between our two visualizations.
  • Show flame chart
  • Flip back to area chart
  • Hover areas
  • You can see how, as I hover the areas on the chart, that portion of the query is highlighted on the left.
  • With this new best-in-class performance analysis visualization, EdgeDB 3.0 is going to make it easier for you to make your apps work better for your users.
  • Excited to hear feedback on this and all the other new features of EdgeDB 3.0. Join us in our discord to share feedback and to ask any questions you have.
  • Thanks again for joining us.

Query

select Movie {
  title,
  release_year,
  actors: {name},
  actors_total := count(.actors),
  franchise := .<entries[is Franchise].name,
  movies_in_franchise_total := count(
    .<entries[is Franchise].entries
  )
} order by .title;