Full table scan vs full index scan performance
Earlier this week, Cédric blogged about how easy we can get confused between a covering index and a full index scan in the EXPLAIN output. While a covering index (seen with EXPLAIN as Extra: Using...
View ArticleReplication of the NOW() function (also, time travel)
Notice the result of the NOW() function in the following query. The query was run on a real database server and I didn’t change the clock of the server or change anything in the database configuration...
View ArticleQuickly finding unused indexes (and estimating their size)
I had a customer recently who needed to reduce their database size on disk quickly without a lot of messy schema redesign and application recoding. They didn’t want to drop any actual data, and their...
View ArticleThe Optimization That (Often) Isn’t: Index Merge Intersection
Prior to version 5.0, MySQL could only use one index per table in a given query without any exceptions; folks that didn’t understand this limitation would often have tables with lots of single-column...
View ArticlePercona Toolkit Webinar followup Q&A
First, a thank you to everyone who attended the webinar Today, I appreciate your time and nice comments. As promised, here are answers to questions that couldn’t be answered during the talk: Q: How...
View ArticleHow to STOP SLAVE on Amazon RDS read replica
We are doing a migration from Amazon RDS to EC2 with a customer. This, unfortunately, involves some downtime – if you are an RDS user, you probably know you can’t replicate an RDS instance to an...
View ArticleBe productive with the MySQL command line
Even if you are using a GUI tool to connect to your MySQL servers, one day or another, you will have to deal with the command line. So it is nice to know a few tips that can really make your work...
View ArticleMySQL Wish for 2013 – Better Memory Accounting
With Performance Schema improvements in MySQL 5.6 I think we’re in the good shape with insight on what is causing performance bottlenecks as well as where CPU resources are spent. (Performance Schema...
View ArticlePercona Toolkit by example – pt-stalk
pt-stalk recipes: Gather forensic data about MySQL when a server problem occurs It happens to us all from time to time: a server issue arises that leaves you scratching your head. That’s when Percona...
View ArticleIs there room for more MySQL IO Optimization?
I prefer to run MySQL with innodb_flush_method=O_DIRECT in most cases – it makes sure there is no overhead of double buffering and I can save the limited amount of file system cache I would normally...
View ArticleHow does MySQL Replication really work?
While we do have many blog posts on replication on our blog, such as on replication being single-threaded, on semi-synchronous replication or on estimating replication capacity, I don’t think we have...
View ArticleProfiling MySQL Memory Usage With Valgrind Massif
There are times where you need to know exactly how much memory the mysqld server (or any other program) is using, where (i.e. for what function) it was allocated, how it got there (a backtrace,...
View ArticleFun with the MySQL pager command
Last time I wrote about a few tips that can make you more efficient when using the command line on Unix. Today I want to focus more on pager. The most common usage of pager is to set it to a Unix pager...
View ArticleMySQL 5.6: Improvements in the Nutshell
Preparing for my talk for Percona MySQL University in Raleigh,NC, Tuesday 29th of January I have created the outline of improvements available in MySQL 5.6 which I thought was worth sharing to give a...
View ArticleHow Can Percona MySQL Server Development Services Help ?
At Percona we offer a number of services. One of them, Custom MySQL Server Development, is commonly the most misunderstood and undervalued. There are a lot of ways Percona custom MySQL server...
View ArticleImplications of Metadata Locking Changes in MySQL 5.5
While most of the talk recently has mostly been around the new changes in MySQL 5.6 (and that is understandable), I have had lately some very interesting cases to deal with, with respect to the...
View ArticleCan’t Create Thread: Errno 11 (A Tale of Two Ulimits)
Recently some of my fellow Perconians and I have noticed a bit of an uptick in customer cases featuring the following error message: SQLSTATE[HY000] [1135] Can't create a new thread (errno 11); if you...
View ArticleAnalyzing Slow Query Table in MySQL 5.6
Analyzing SQL Queries with Percona Toolkit, Feb. 25-28, 9-11 a.m. PST Next week I’m teaching an online Percona Training class, called Analyzing SQL Queries with Percona Toolkit. This is a guided tour...
View ArticleMystery Performance Variance with MySQL Restarts
Based on a lot of surprising comments about my MySQL 5.5 vs 5.6 performance post I decided to perform deeper investigation to see where my results could go possibly wrong. I had set up everything to be...
View ArticleMySQL 5.5 and 5.6 default variable values differences
As the part of analyzing surprising MySQL 5.5 vs 5.6 performance results I’ve been looking at changes to default variable values. To do that I’ve loaded the values from MySQL 5.5.30 and 5.6.10 to the...
View Article