Today, speed in web applications is one of the keys to success. It effects the interaction with users, their perception about the website and even how Google ranks websites.
And, database performance is one of the most important factors of speed, as, once there is a bottleneck in it, nothing will function fast.
During the development of Uptime Robot (and still), in order for the application to handle more requests in a shorter time, I needed to optimize 2 things:
- the queries used
- MySQL server itself
Yes, minimizing the number of queries, using indexes smartly or changing the well-known settings of MySQL server makes sense but measuring the results and finding out how each update effects the performance is the hardest thing to analyze.
This is when I started using MONyog, a desktop application (with Windows and Linux versions), that helps tracking everything about a MySQL server. And, most importantly, it comes with working advices at every point.
The application can connect to any number of MySQL servers which is great for working with the test and production server at the same time. And, it only requires the MySQL root login to collect data (nothing to install on MySQL servers).
Its dashboard welcomes you with the most important charts like the availability of the server, number of connections, cache misses, statements and any other metric can be added.
Besides the ability to viewing the process list, disk usage or events, there are 2 menus that saved me so much time:
- Query Analyzer
The menu has multiple sub-menus where each of them helps fine-tuning the server so much.
You can get the number of "current connections" and how effectively they are used, InnoDB cache and logs performance, thread cache, table cache, index usage (how effective they are), the number of each statement (select, insert..) and many sub-metrics.
Each item is explained shortly yet clearly and advices are shown to make them better.
MONyog also scans the settings of the server, displays the values as a snapshot and warns you about any possible security issues (and how to fix them).
This is where you can find the popular "slow query log". But it comes with a better presentation (compared to a standard MySQL slow log query) that focuses on finding the issues.
The Query Analyzer is vital in locating the problematic queries and seeing how they perform after optimizing them live.
To sum up
I started using MONyog when I was just about to decide that everything was done for performance, the limit of the server was reached and a 2nd or a much powerful MySQL server was required as the resource usage was ~90% in average.
After the optimizations with the application, the same server responds to a bigger number of queries in a shorter time with lower than 50% of resource usage.
Simply, it saved me renting a new server and providing a better experience to Uptime Robot users. And, totally suggest it if you are managing a busy MySQL server.
The giveaway and how to join?
After my experience with MONyog, I contacted them with the idea of running a giveaway and they were kind enough to giveaway "3 MONyog Ultimate Single Server with Premium Support" licenses ($399/each) to WRD readers.
In order to join the giveaway:
- Share this giveaway with a tweet: "Just joined the MONyog MySQL Monitor and Advisor giveaway at WebResourcesDepot – http://goo.gl/0O6Eg" (click to tweet easily)
- Follow @webyog Twitter user
- Share your tweet URL within the comments
The winners will be announced 1 week later (3 November 2011) and good luck.