Technology | 21-12-2021 | Tosska
One of the main reasons behind the existence of query attributes is their use in adding metadata to statements. The metadata offers an additional context in MySQL database and SQL, such as the information about the location within the application of the generation of the query.
Typically, this is done by inserting a comment at the beginning of the statement that contains the attributes. Doing this will have zero effect on the statement’s semantics because the MySQL parser overlooks comments. However, these comments are helpful for various tools that extract them for further use.
In this blog, we will explore the uses of query attributes and the proper method for using them.
Initially, the user might assume that attaching metadata to an Oracle database and SQL statement is the kind of thing people just do - that there’s no practical reason behind it. After all, even MySQL doesn’t pay any attention to it. However, there are at least two uses of query attributes:
1. To use in plugins. Top examples include the audit log plugin and the query rewrite plugin.
2. To use in a web application to keep track of the URL responsible for generating the query.
3. Other important reasons may include enabling communication between teams and gathering query statistics, both of which are linked. To understand this relation, let us take an example in a typical MySQL database and SQL application:
If a database team member faces an incident involving extreme CPU usage, they find it easy when they are able to check the kind of query attributes in use during the specific occurrence.
It also becomes even more convenient to communicate such problems to the developers when they have access to the query attributes. That’s because the developers have them in full view and can pinpoint the location of their generation along with the type of workflow they belong to. While such details may not be as useful for small projects, they can prove invaluable for larger projects.
Despite their uses, there are a few limitations that have been observed by database experts. These are also true in the case of Oracle database and SQL:
- When it comes to connectors, such as MySQL Shell, you may find it hard to find support.
- No one has found a way to gain aggregate data directly from Performance Schema yet. Nor has anyone located a technique to get the query attributes through a different link, so it’s still a bit difficult to use them for monitoring.
- Query attributes need an additional round trip from the server to the application. This reduces performance.
Query attributes are certainly useful but there are some cases where they will be especially appreciated. Moreover, you’ll need a plugin to make the most of these - you may also come across a query that somehow benefits from their existence and its knowledge of them.
There are a few ways to persist the attributes of a query throughout multiple statements as well, which may be helpful for some.