Monitor and Optimize Slow Queries with PMM and EverSQL – Part OneMichael Coburn
A common challenge with continuously deployed applications is that new and modified SQL queries are constantly being introduced to the application. Many companies choose to use a database monitoring system (such as PMM) to identify those slow queries. But identifying slow queries is only the start – what about actually optimizing them?
In this post we’ll demonstrate a new way to both identify and optimize slow queries, by utilizing the recent integration of Percona Monitoring and Management with EverSQL Query Optimizer via Chrome browser extension. This integration allows you to identify slow queries using PMM, and optimize them automatically using EverSQL Query Optimizer.
Optimizing queries with PMM & EverSQL
We’re using PMM to monitor our MySQL instance, which was pre-loaded with the publicly available StackOverflow dataset. PMM is configured to monitor for slow queries from MySQL’s slow log file.
We’ll begin with a basic example of how EverSQL can provide value for a simple SELECT statement. In a follow-up blog post we’ll go through a more sophisticated multi-table query to show how response time can be reduced from 20 minutes to milliseconds(!) using EverSQL.
Let’s have a look at one of the slow queries identified by PMM:
In this example, the table posts contains two indexes by default (in addition to the primary key). One that contains the column AnswerCount, and the other contains the column CreationDate.
CREATE TABLE `posts` (
`Id` int(11) NOT NULL,
`AcceptedAnswerId` int(11) DEFAULT NULL,
`AnswerCount` int(11) DEFAULT NULL,
`ClosedDate` datetime DEFAULT NULL,
`CreationDate` datetime NOT NULL,
`ViewCount` int(11) NOT NULL,
PRIMARY KEY (`Id`),
KEY `posts_idx_answercount` (`AnswerCount`),
KEY `posts_idx_creationdate` (`CreationDate`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
As you can see below, EverSQL identifies that a composite index which contains both columns can be more beneficial in this case, and recommends to add an index for posts(AnswerCount, CreationDate).
After using pt-online-schema-change to apply the schema modification, using PMM we are able to observe that the query execution duration changed from 3m 40s to 83 milliseconds!
Note that this Extension is available for Chrome from the chrome web store:
If you’re looking for an easy way to both monitor for slow queries and quickly optimize them, consider deploying Percona Monitoring and Management and then integrating it with EverSQL’s Chrome extension!
Co-Author: Tomer Shay
Tomer Shay is the Founder of EverSQL. He loves being where the challenge is. In the last 12 years, he had the privilege to code a lot and lead teams of developers, while focusing on databases and performance. He enjoys using technology to bring ideas into reality, help people and see them smile.