Metis Building Blocks
an execution plan is the various steps that are involved in fetching results from the database tables. Once a query is executed, the Query Optimizer of the DB Engine quickly generates multiple execution plans and selects the one which returns the results with the best performance.
There are two types of execution plans
- 1.Estimated Execution Plan – As the name suggests, this type of execution plan is just a guess by the query processor about how the specific steps that are to be involved while returning the results. It is generated BEFORE the query has been executed and usually generated very quickly.
- 2.Actual Execution Plan – The Actual Execution Plan is generated AFTER the query has been executed. It shows the actual operations and steps involved while executing the query. This may or may not differ from the Estimated Execution Plan. Since this is the actual execution of the SQL Command, it might take a long time for the command to finish. Furthermore, the INSERT / UPDATE and DELETE commands actually modify the data in the tables when the actual plan is executed.
An Insight is the interpretation of Metrics. An insight evaluates the status and generates clear problems the user should be aware of, with a reasonable and explainable severity.
An Insight contains
- Quick summary of the problem
- Automated Investigation - detailed analysis of the thought process, what Metrics were calculated, and how the severity of the problem was evaluated.
- The Impact of ignoring the problem.
- A Remediation Plan to solve the problem.
- References to a Knowledge Base for more information about the problem and how to fix it.
A Metric describes and measures quantitatively elements of a database. The Metrics are seen as facts, not good, not bad.
- The duration of a query
- Number of rows in a table
- Last update of the statistics in a table
- DB size
- The cost of a specific operation in a specific query
A Span represents a unit of work or operation. Spans are the building blocks of Traces. In OpenTelemetry, they include the following information:
Traces give us the big picture of what happens when a request is made by user or an application. A Trace in Metis contains:
- A REST / GraphQL command - Routh, method, status, duration...
- The SQL Command(s) generated by the REST / GQL.
- The estimated execution plan of each SQL Command.
Metis uses the Open Telemetry specification to define the Traces. The goal of Open Telemetry is to provide a set of standardized vendor-agnostic SDKs, APIs, and tools for ingesting, transforming, and sending data to an Observability back-end (i.e. open-source or commercial vendor).