Ten Tips for MySQL Users
The things every MySQL user should know
Nov. 28, 2012 09:15 AM
MySQL, just like other relational databases, is complicated. It can jam at any time jeopardizing your applications or business without notice. Most MySQL malfunctions are due to common mistakes. It is essential to avoid these mistakes, often hidden by configuration trap or workload, to ensure that MySQL server runs effectively. Here are 10 tips to ensure excellent performance of the MySQL server.
Profile your workload
Profiling the server's workload is the best way to know how the server spends time. This exposes the most exclusive questions for tuning. Time is very essential here as one considers how quickly the server completes a request when a query is issued it. Similar queries are grouped by these tools together in a row in order to distinguish slow and fast queries.
Understand the fundamental resources
A database server requires four important resources to function: CPU, disk, network and memory all of which if erratic, overloaded or weak may cause the database to malfunction. It is important to understand these resources in troubleshooting problems and choosing hardware. Ensure all components are functioning well and reasonably balanced against each other when choosing hardware for MySQL. Server performance can be cheaply enhanced by adding memory on disk-bound workloads. On the other hand, MySQL performs best with fast CPUs since each query cannot be paralleled across CPUs. When troubleshooting, performance and utilization of resources must be checked carefully to determine whether it is overloaded or functioning poorly. This also goes for using database conversion tools.
MySQL should not be set as a queue
Queues may invade your application without your knowledge. For instance, when a status is set such that a particular worker process claims it before acting on it, then you are certainly creating a queue. Queues cause problems by serializing workload and preventing tasks from being executed in parallel.
MySQL can be optimized to do cheap work first then the hard work, on a smaller set of resulting data. For instance, when searching for something within a radius of a given geographical point, the great-circle (Haversine) formula is the tool used for calculating distance on the surface of a sphere. This formula, however, needs a lot of CPU-sensitive trigonometric calculations thus posing a problem as the CPU utilization rises due to slow operations. It is hence necessary to pare down records to a smaller subset of the total and trimming the resulting set to a precise circle before using this formula
Understanding the scalability death traps
Unlike common beliefs, scalability is not vague as there are exact mathematical equations expressing scalability. The equations show why systems do not scale as they should. The universal scalability law explains scaling in terms of serialization and crosstalk. Parallel processes that must stop for a serialized process to take place are limited in scalability. Similarly, when parallel processes chat with each other consistently to coordinate their work, they hinder each other. Applications scale better when crosstalk and serialization are avoided, which translate to locks on rows for MySQL.
Too much focus should not be placed on configuration
DBAs spend time tweaking configurations resulting in a small improvement that can be damaging. Not all MySQL defaults should be configured. Ninety-five percent of the server's best performance can be obtained by correct setting of 10 options. Server tuning tools are recommended for giving guidelines.
Look out for pagination queries that cause the server to malfunction
This causes the server to generate a lot of work and discard rows. Optimization can be done to set the final row as the starting point for another set of results.
Save statistics promptly, alert reluctantly
It is important to capture and save metrics as they are essential in effecting changes in the system. Meanwhile, alert sparingly and only on conditions indicating an actionable problem.
Learn the three rules of indexing
Properly designed indexes serve three functions in a database: Allow the server identify groups of adjacent rows, avoid sorting by reading in a preferred order and satisfy all queries from the index alone.
Leverage the expertise of your peers
Doing what you feel is logical will work most of the times but not all the times. The time it doesn't work may cost you time and money.