A lot have been written about Battery Learning Cycle problems and
its impact to MySQL Performance. Here are couple of links
(1,2). It is good to see though there are some
controllers coming out which solve this problem, namely Adaptec
5Z series controllers (Z stands for Zero Maintenance). This is
not quite new technology they have appeared on market about 2
years ago but it is just now we can state they have been working
well for number of customers.
As Explained in this PDF ZMCP (Zero-Maintenance Cache Protection)
does not use battery but instead Capacitor plus flash. Capacitor
provides …
I guess I’m first to post in 2012 so Happy New Year all blog
readers !
Now back to HardCore MySQL business – foreign Keys. MySQL
supported Foreign Keys for Innodb for many years, yet rudimentary
support initially added in MySQL 3.23.44 have not been improved
in new releases as much as I’d like. We still get cryptic error
messages such as “ERROR 1025 (HY000): Error on rename of
‘./test/child’ to ‘./test/#sql2-496-40a5′ (errno: 152)” in many
cases and foreign keys are still handled on storage engine level
making them not working for partitioned tables as well as making
foreign keys performed row by row which often can be very
inefficient.
As results of Foreign Key limitations you might need to get rid
of them, yet this leaves you up for a final bite – dropping
foreign keys requires table rebuild. Yes you get it right even
though Innodb is able to drop indexes without rebuilding table
since MySQL 5.1 (Innodb Plugin) …
Overview
Profiling, analyzing and then fixing queries is likely the most oft-repeated part of a job of a DBA and one that keeps evolving, as new features are added to the application new queries pop up that need to be analyzed and fixed. And there are not too many tools out there that can make your life easy. However, there is one such tool, pt-query-digest (from Percona Toolkit) which provides you with all the data points you need to attack the right query in the right way. But vanilla MySQL does have its limitations, it reports only a subset of stats, however if you compare that to Percona server, it reports extra stats such as information about the queries’ execution plan (which includes things like whether Query cache was used or not, if Filesort was used, whether tmp table was created in memory or on disk, if full scan was done, etc) as well as InnoDB …
[Read more]We will be holding our highly acclaimed MySQL workshops in Frankfurt, Germany the week of February 13th. Early registration is open; enroll today and secure your seat. Detail and enrollment can be found here.
Many of us find INFORMATION_SCHEMA painfully slow to work it when
it comes to retrieving table meta data. Many people resort to
using file system tools instead to
find for example how much space innodb tables are using and
things like it. Besides being just slow accessing
information_schema can often impact server performance
dramatically. The cause of majority of this slowness is not
opening and closing tables, which can be solved with decent table
cache size, and which is very fast for
Innodb but by the fact MySQL by default looks to refresh Innodb
statistics each time table is queried from information
schema.
The solution is simple, just set
innodb_stats_on_metadata=0 which will prevent
statistic update when you query information_schema. Most
likely
you do not want it anyway. This will not make Innodb to operate
without statistics at all as Innodb will still compute statistics
for the …
Merry Christmas! Just in time for the holidays, we have released a new tool to help you configure and manage your MySQL servers. Our online MySQL Configuration Wizard can help you generate a good basic configuration file for a server. This MySQL tuning wizard is our answer to the commonly asked question, “what is a good default configuration file for my server with 16 GB of RAM?”
We have a raft of new features planned for future releases, including advanced configuration options, supersafe settings to prevent bad things from happening, and much more. In the future we plan to add more online tools to help you be more productive.
Please give it a spin and let us know what you think. Credit for this tool must go to Miguel Trias, our talented lead developer. Thanks also to the many experts inside Percona who helped test, and …
[Read more]Many of you have seen the announcement for our Percona Live in Washington, DC in January! But did you know we also have our highly rated MySQL Training coming to Washington, DC the week of January 16h? Full details can be found on the Percona website. If you would like to attend the MySQL Training, click here to register and receive a 20% discount.
One of the more common questions I get asked is which Linux
distribution I would use for a MySQL database server. Bearing the
responsibility for someone else’s success means I should advise
something that is stable, reliable, easy to manage and has plenty
of resources available online. It should also allow running MySQL
without too much hassle. Unless there are individual
circumstances, it actually makes the decision quite easy.
There are probably only a few distributions, which can be
considered: CentOS, Debian, RedHat Enterprise Linux, SuSE Linux
and Ubuntu. Of course CentOS and Ubuntu derive from RedHat and
Debian respectively, but their install bases are large enough to
mention them separately. Running MySQL won’t be much different
whether one or another distribution is used. All use common Linux
kernel – the heart of Linux operating system – which in principle
will behave the same way in all cases. The kernel versions may …
Problem with kernel_mutex in MySQL 5.1 and MySQL 5.5 is known: Bug report. In fact in MySQL 5.6 there are some fixes that suppose to provide a solution, but MySQL 5.6 yet has long way ahead before production, and it is also not clear if the problem is really fixed.
Meantime the problem with kernel_mutex is raising, I had three customer problems related to performance drops during the last month.
So what can be done there ? Let’s run some benchmarks.
But some theory before benchmarks. InnoDB uses kernel_mutex when it starts/stop transactions, and when InnoDB starts the transaction, usually there is loop through ALL active transactions, and this loop is inside kernel_mutex. That is to see kernel_mutex in action, we need many concurrent but short transactions.
For this we will …
[Read more]Over the last few years, Domas’s technique of using GDB as a profiler has become a key tool in helping us analyze MySQL when customers are having trouble. We have our own implementation of it in Percona Toolkit (pt-pmp) and we gather GDB backtraces from pt-stalk and pt-collect.
Although it’s helped us figure out a lot of problems, sometimes it doesn’t go well. Getting GDB backtraces is pretty intrusive. Here are three things that I’ve witnessed:
- The server freezes for the duration of the process. This is the most obvious impact on the running server: GDB forklifts the process and gets a stack trace from every thread, then lets it go on working. But this can take a while. It’s usually a couple of seconds, but on big servers with a lot of memory and many threads, it can take much longer (I’ve seen tens of seconds, …