Over the last year, I have been pursuing a part time hobby project exploring ways to squeeze as much data as possible in MySQL. As you will see, there are quite a few different ways. Of course things like compression ratio matters a lot but, other items like performance of inserts, selects and updates, along with the total amount of bytes written are also important. When you start combining all the possibilities, you end up with a large set of compression options and, of course, I am surely missing a ton. This project has been a great learning opportunity and I hope you’ll enjoy reading about my results. Given the volume of results, I’ll have to write a series of posts. This post is the first of the series. I also have to mention that some of my work overlaps work done by one of my colleague, Yura Sorokin, in a …
[Read more]Please join Percona’s MySQL Database Administrator, Brad Mickel as he presents How to Analyze and Tune MySQL Queries for Better Performance on Thursday, June 21st, 2018, at 10:00 AM PDT (UTC-7) / 1:00 PM EDT (UTC-4).
Query performance is essential in making any application successful. In order to finely tune your queries you first need to understand how MySQL executes them, and what tools are available to help identify problems.
In this session you will learn:
- The common tools for researching problem queries
- What an Index is, and why you should use one
- Index limitations
- When to rewrite the …
Please join Percona’s CEO, Peter Zaitsev as he presents MySQL: Scaling and High Availability – Production
Experience Over the Last Decade(s) on Tuesday, June 19th,
2018 at 7:00 AM PDT (UTC-7) / 10:00 AM EDT (UTC-4).
Percona is known as the MySQL performance experts. With over 4,000 customers, we’ve studied, mastered and executed many different ways of scaling applications. Percona can help ensure your application is highly available. Come learn from our playbook, and leave this …
[Read more]Please join Percona’s CEO, Peter Zaitsev as he presents Performance Analysis and Troubleshooting Methodologies for Databases on Wednesday, June 13th, 2018 at 11:00 AM PDT (UTC-7) / 2:00 PM EDT (UTC-4).
Have you heard about the USE Method (Utilization – Saturation – Errors)? RED (Rate – Errors – Duration), or Golden Signals (Latency – Traffic – Errors – Saturations)?
In this presentation, we will talk briefly about these different-but-similar “focuses”. We’ll discuss how we can apply them to data infrastructure performance analysis, troubleshooting, and monitoring.
We will use MySQL as an …
[Read more]We've been busy in the MySQL Curriculum team and are pleased to announce the recent update of the MySQL Performance Tuning course.
This course has been substantially revised to take advantage of the performance enhancements available in MySQL 5.7, including new Performance Schema instrumentation and improvements in InnoDB and the Query Optimizer.
Even more so than in previous versions of the course, we try to filter out what's "nice to know" and focus on the really important configuration settings that can make the most positive impact on your server workload. We provide more in-depth coverage and practice of using system databases like Performance Schema/sys and graphical tools like MySQL Enterprise Monitor and MySQL Workbench that can help you identify performance bottlenecks and be proactive about resolving them before they start to become a major issue for your users. We also cover the use of Oracle tools like Oracle …
[Read more]The two status variables Queries and Questions can sometimes cause confusion. On the face of it, both appear to count the number of times a query is executed on the server.
Each variable has both session and global scope, meaning that you can get statistics for both the current connection and for all connections. You can reset the session variables by executing FLUSH STATUS, but resetting the global variables requires a server restart.
All good so far. However, the way in which these variables are incremented is not always intuitive.
For one thing, everything in MySQL is a Question. Any operation you perform, including checking the status of a server variable is a Question. Even checking the number of Questions issued by your session is, in itself, a Question:
mysql> SHOW STATUS LIKE 'Questions'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Questions | 2 | …
[Read more]Hope you have been following our recent webinars on MySQL, Galera Cluster, AWS monitoring and more.
We are coming up with a webinar series in association with Eric Vanier, a leading MySQL expert consultant. The series will provide a step-by-step process to optimize MySQL database performance.
This webinar series is for everyone who is looking for ways to monitor their MySQL databases, simplify the process to manually analyze queries and achieve faster issue resolution time.
Eric Vanier will focus on key problem areas that are faced by DBAs and Shree will provide a solution-driven demonstration to overcome issues while monitoring the database performance. To make it simple, the series will comprise of three parts:
Part – 1: MySQL Performance Tuning
26 June; 10:00 am Eastern time
Troubleshooting a MySQL …
[Read more]Hope you have been following our recent webinars on MySQL, Galera Cluster, AWS monitoring and more.
We are coming up with a webinar series in association with Eric Vanier, a leading MySQL expert consultant. The series will provide a step-by-step process to optimize MySQL database performance.
This webinar series is for everyone who is looking for ways to monitor their MySQL databases, simplify the process to manually analyze queries and achieve faster issue resolution time.
Eric Vanier will focus on key problem areas that are faced by DBAs and Shree will provide a solution-driven demonstration to overcome issues while monitoring the database performance. To make it simple, the series will comprise of three parts:
Part – 1: MySQL Performance Tuning
26 June; 10:00 am Eastern time
Troubleshooting a MySQL …
[Read more]One of the many great new features included in MySQL 5.7 is the generated column. A generated column is a column in a table where the data is calculated for you, based on an expression that you provide.
To understand the benefits of using generated columns, let's consider a very simple example. Imagine that I want to find out how many new hires my organization had in the year 2000. Here's my table:
mysql> DESC employees; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | emp_no | int(11) | NO | PRI | NULL | | | birth_date | date | NO | | NULL | | | first_name | varchar(14) | NO | | NULL | | | last_name | varchar(16) | NO | | NULL | | | gender | enum('M','F') | NO | | NULL | | | hire_date | date | NO | | NULL | | +------------+---------------+------+-----+---------+-------+ 6 rows in set (#.## sec)
…[Read more]When we are hired for a MySQL performance audit, we are expected to review the MySQL configuration and to suggest improvements. Many people are surprised because in most cases, we only suggest to change a few settings even though hundreds of options are available. The goal of this post is to give you a list of some of the most critical settings.
We already made such suggestions in the past here on this blog a few years ago, but things have changed a lot in the MySQL world since then!
Before we start…
Even experienced people can make mistakes that can cause a lot of trouble. So before blindly applying the recommendations of this post, please keep in mind the following items:
- Change one setting at a time! This is the only way to estimate if a change is beneficial.
- Most …