Let’s examine COMMIT
latency on Aurora v2 (MySQL
5.7) vs. Aurora v3 (MySQL 8.0) vs. RDS MySQL 8.0 2-AZ vs. RDS
MySQL 8.0 3-AZ “cluster”.
In this blog, I will cover important aspects which you need to test when benchmarking replication setup. MySQL has great tools that could be used to test its performance. They include:
sysbench – https://github.com/akopytov/sysbench
BMK-kit – http://dimitrik.free.fr/blog/posts/mysql-perf-bmk-kit.html
mysqlslap – https://dev.mysql.com/doc/refman/8.0/en/mysqlslap.html
LinkBench – https://github.com/facebookarchive/linkbench
I will not describe how to use them here, as you can find instructions on the provided links or in the Percona blog by browsing tags …
[Read more]
Recently we published the first part (m5, m5a, m6g) and
the second part (C5, C5a, C6g) of research
regarding comparing Graviton ARM with AMD and Intel CPU on AWS.
We selected general-purpose EC2 instances with the same
configurations (amount of vCPU in the first part). In the second
part, we compared compute-optimized EC2 instances with the same
conditions. The main goal was to see the trend and make a general
comparison of CPU types on the AWS platform only for MySQL. We
didn’t set the goal to compare the performance of different CPU
types. Our expertise is in MySQL performance tuning. We share
research “as is” with all scripts, and anyone interested could
rerun and reproduce it.
All scripts, …
Following my post MySQL/ZFS Performance Update, a few people have suggested I should take a look at BTRFS (“butter-FS”, “b-tree FS”) with MySQL. BTRFS is a filesystem with an architecture and a set of features that are similar to ZFS and with a GPL license. It is a copy-on-write (CoW) filesystem supporting snapshots, RAID, and data compression. These are compelling features for a database server so let’s have a look.
Many years ago, in 2012, Vadim wrote a blog post about BTRFS and the results were disappointing. Needless to say that since 2012, a lot of work and effort has been invested in BTRFS. So, this post will examine the BTRFS version that comes with the latest Ubuntu LTS, 20.04. It is not bleeding edge but it is likely the most recent …
[Read more]I created the first draft of this post many years ago. At that time, I was working with physical servers having 192 GB of RAM or more. On such systems, doing memory pressure tests with MySQL is complicated. I used a trick to simulate a Linux server with less RAM (also works with vms, probably not with Kubernetes or containers). I recently needed the trick again and as I
Recently we published the first part of research comparing
Graviton (ARM) with AMD and Intel CPU on AWS. In the first
part, we selected general-purpose EC2 instances with the same
configurations (amount of vCPU). The main goal was to see
the trend and make a general comparison of CPU types on the AWS
platform only for MySQL. We didn’t set the goal to compare the
performance of different CPU types. Our expertise is in MySQL
performance tuning. We share research “as is” with all scripts,
and anyone interested could rerun and reproduce it.
All scripts, raw logs and additional plots are available on
GitHub: (2021_10_arm_cpu_comparison_c5, …
Recently, AWS presented its own CPU on ARM architecture for server solutions.
It was Graviton. As a result, they update some lines of their EC2 instances with new postfix “g” (e.g. m6g.small, r5g.nano, etc.). In their review and presentation, AWS showed impressive results that it is faster in some benchmarks up to 20 percent. On the other hand, some reviewers said that Graviton does not show any significant results and, in some cases, showed fewer performance results than Intel.
We decided to investigate it and do our research regarding Graviton performance, comparing it with other CPUs (Intel and AMD) directly for MySQL.
Disclaimer
- The test is designed to be CPU bound only, so we will use a read-only test and make sure there is no I/O activity during the test.
- Tests were run on m5.* (Intel) , m5a.* (AMD), m6g.*(Graviton) EC2 instances in the US-EAST-1 region. (List of EC2 see …
Primary Key design is an important thing for InnoDB performance, and choosing a poor PK definition will have an impact on performance and also write propagation in databases. When this comes to Aurora, this impact is even worse than you may notice.
In short, we consider a poor definition of a Primary Key in InnoDB as “anything but quasi sequential values”, which may cause very random access to data and thus increase the IO dependency.
In this post, I’ll try to demonstrate the potential impact of the primary key design when running on Aurora, and how a bad design can lead to a 15x write latency penalty (or more).
The Analysis
Recently I worked on a case where a customer was having issues with scaling writes in Aurora MySQL. While this is a known limitation in Aurora considering how the distributed storage layer syncs out data among all nodes of the cluster, we observed additional latency occurring when more …
[Read more]As some of you likely know, I have a favorable view of ZFS and especially of MySQL on ZFS. As I published a few years ago, the argument for ZFS was less about performance than its useful features like data compression and snapshots. At the time, ZFS was significantly slower than xfs and ext4 except when the L2ARC was used.
Since then, however, ZFS on Linux has progressed a lot and I also learned how to better tune it. Also, I found out the sysbench benchmark I used at the time was not a fair choice since the dataset it generates compresses much less than a realistic one. For all these reasons, I believe that it is time to revisit the performance aspect of MySQL on ZFS.
ZFS Evolution
In 2018, I reported ZFS performance results based on version 0.6.5.6, the default version available in Ubuntu Xenial. The present post is using …
[Read more]
Introduction
Sysbench is a tool to benchmark to test open source databases. We have integrated Sysbench into the RonDB installation. This makes it extremely easy to run benchmarks with RonDB. This paper will describe the use of these benchmarks in RonDB. These benchmarks were executed with 1 cluster connection per MySQL Server. This limited the scalability per MySQL Server to about 12 VCPUs. Since we executed those benchmarks we have increased the number of cluster connections per MySQL Server to 4 providing scalability to at least 32 VCPUs per MySQL Server.
As preparation to run those benchmarks we have created a RonDB cluster using the Hopsworks framework that is currently used to create …
[Read more]