In the last weeks / months, I have been working on understanding / improving MySQL startup with many tables. I already wrote four posts on the subject, they are listed below. In this post, I use the system analysis of the previous post to revisit the light optimization on EBS volumes. With this analysis, I am able to determine why the previous tests did not show
In MySQL 8.0 we introduced a totally new design for InnoDB REDO Log management. The main difference was about implementing a lock-free solution for user threads, and use dedicated REDO threads for all background IO write work.
for more details, see an excellent and very detailed article by Pawel : https://dev.mysql.com/blog-archive/mysql-8-0-new-lock-free-scalable-wal-design/
However, over a time we also added an option to let users to switch REDO threads=OFF to enforce REDO log processing efficiency in some particular cases. Unfortunately this feature created a lot of confusions for MySQL users, and many ones interpreted this in different ways, providing different and sometimes opposite advices, etc..
My main advice will be always : test each feature yourself and within your …
[Read more]When running tests, it is sometimes useful to slow down IOs to clearly show the impact of reading from the disk. Modern laptops and servers usually have fast local SSDs, and most cloud vendors provide, in addition to fast local disks, relatively fast network block devices (EBS for AWS and Persistent Disk for GCP). Even when using magnetic network block devices, IOs are not guaranteed
We’ve seen in previous articles what Transparent Read/Write Splitting is with MySQL 8.2 and how to use it with MySQL Connector/Python.
I love this new feature, but I was wondering if it was really worth it.
Will the application benefit from offloading reads to another node, and won’t using the MySQL Router and parsing the request slow down connections?
These are the kinds of questions I’d like to cover and answer in this article.
The environment
To perform the test, I use the following environment:
- Linux Kernel 5.15.0 – aarch64
- MySQL Community Server 8.2.0
- MySQL Router 8.2.0
- sysbench 1.1.0 using LuaJIT 2.1.0-beta3 …
Recently Jack asked me for a Sysbench package for OL9.
In this post, you can find the RPM packages of Sysbench 1.1.0 build for Oracle Linux 9, RedHat Enterprise 9 and any RPM compatible system.
Sysbench’s binary is linked with
libmysqlclient.so.21
and
libssl.so.3
.
Here are the two files, one for x86_64 and one for aarch64 (ARM):
sysbench-1.1.0-2.el9.x86_64Download
…
[Read more]In my previous post about InnoDB Stalls on Empty Free List, I used a test environment that might look a little artificial : a table larger than the InnoDB Buffer Pool but fitting in the Linux Page Cache. This configuration allows serving very quickly what MySQL thinks are IOs because these are hit in the filesystem cache. In this post, I explain why this environment is not
If, in Percona Server, you are observing tail latencies on queries that should be fast, this might be a side effect of Percona's improved InnoDB Empty Free List Algorithm. When using this algorithm (the default in 5.6 and 5.7 and optional configuration in 8.0), a query needing a free page while none are available waits until the LRU Manager Thread refills the free list. Because this
The following is a short HOWTO about deployment and use of Benchmark-kit (BMK-kit). The main idea of this kit is to simplify your life in running various MySQL benchmark workloads with less blood and minimal potential errors.
Generally as simple as the following :
$ bash /BMK/sb_exec/sb11-Prepare_50M_8tab-InnoDB.sh 32 # prepare data $ for users in 1 2 4 8 16 32 64 128 256 512 1024 2048 do # run OLTP_RW for 5min each load level.. bash /BMK/sb_exec/sb11-OLTP_RW_50M_8tab-uniform-ps-trx.sh $users 300 sleep 15 done
the latest public online version of the following HOWTO is always available from here : http://dimitrik.free.fr/blog/posts/mysql-perf-bmk-kit.html
Read more... (45 min remaining to read)
For a future article, I was again looking into the possibility of using sysbench to generate data and load on a MySQL database. However, I needed an SSL connection which only version 1.1.0 supports (see issue 308).
Alexey didn’t create a branch and/or release for the version 1.1.0. The code is the master branch.
As you know, I like to install software using the Operating System’s packaging and so I created a rpm for sysbench 1.1.0.
If you are also interested to use this version, here are the rpms for some popular OS and architecture (including Arm):
sysbench-1.1.0-1.fc35.x86_64 …
[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, …