Percona Resources

Software
Downloads

All of Percona’s open source software products, in one place, to download as much or as little as you need.

Valkey Contribution

Product Documentation

Why Percona for MongoDB?

Why Percona for PostgreSQL?

Percona Blog

Percona Blog

Our popular knowledge center for all Percona products and all related topics.

Community

Percona Community Hub

A place to stay in touch with the open-source community

Events

Percona Events Hub

See all of Percona’s upcoming events and view materials like webinars and forums from past events

About

About Percona

Percona is an open source database software, support, and services company that helps make databases and applications run better.

Percona in the News

See Percona’s recent news coverage, press releases and industry recognition for our open source software and support.

Our Customers

Our Partners

Careers

Contact Us

Vadim Tkachenko
Vadim Tkachenko co-founded Percona in 2006 and serves as its Chief Technology Officer. Vadim leads Percona Labs, which focuses on technology research and performance evaluations of Percona’s and third-party products. Vadim’s expertise in LAMP performance and multi-threaded programming help optimize MySQL and InnoDB internals to take full advantage of modern hardware. He also co-authored the book High Performance MySQL: Optimization, Backups, and Replication 3rd Edition.

tpcc-mysql benchmark tool: less random with multi-schema support

In this blog post, I’ll discuss changes I’ve made to the tpcc-mysql benchmark tool. These changes make it less random and support multi-schema. This post might only be interesting to performance researchers. The tpcc-mysql benchmark to is what I use to test different hardware (as an example, see my previous post: https://www.percona.com/blog/2016/07/26/testing-samsung-storage-in-tpcc-mysql-benchmark-percona-server/). The first change is support for multiple schemas, […]

Docker Images for MySQL Group Replication 5.7.14

In this post, I will point you to Docker images for MySQL Group Replication testing. There is a new release of MySQL Group Replication plugin for MySQL 5.7.14. It’s a “beta” plugin and it is probably the last (or at lease one of the final pre-release packages) before Group Replication goes GA (during Oracle OpenWorld […]

Testing Docker multi-host network performance

In this post, I’ll review Docker multi-host network performance. In a past post, I tested Docker network. The MySQL Server team provided their own results, which are in line with my observations. For this set of tests, I wanted to focus more on Docker networking using multiple hosts. Mostly because when we set up a high availability […]

Testing Samsung storage in tpcc-mysql benchmark of Percona Server

This blog post will detail the results of Samsung storage in tpcc-mysql benchmark using Percona Server. I had an opportunity to test different Samsung storage devices under tpcc-mysql benchmark powered by Percona Server 5.7. You can find a summary with details here https://github.com/Percona-Lab-results/201607-tpcc-samsung-storage/blob/master/summary-tpcc-samsung.md I have in my possession: Samsung 850 Pro, 2TB: This is a SATA device and […]

The need for parallel crash recovery in MySQL

In this blog, I will discuss how parallel crash recovery in MySQL benefits several processes. I recently filed an Oracle feature request to make crash recovery faster by running in multiple threads. This might not seem very important, because MySQL does not crash that often. When it does crash, however, crash recovery can take 45 […]

Docker automatic MySQL slave propagation

In this post, we’ll discuss Docker automatic MySQL slave propagation for help with scaling. In my previous posts on the Docker environment, I covered Percona XtraDB Cluster. Percona XtraDB Cluster can automatically scale by conveniently adding new nodes using the highly automated State Snapshot Transfer. State Snapshot Transfer allows a new node to copy data […]

Running Percona XtraDB Cluster nodes with Linux Network namespaces on the same host

This post is a continuance of my Docker series, and examines Running Percona XtraDB Cluster nodes with Linux Network namespaces on the same host. In this blog I want to look into a lower-level building block: Linux Network Namespace. The same as with cgroups, Docker uses Linux Network Namespace for resource isolation. I was looking into […]

Scaling Percona XtraDB Cluster with ProxySQL in Kubernetes

How do you scale Percona XtraDB Cluster with ProxySQL in Kubernetes? In my previous post I looked how to run Percona XtraDB Cluster in a Docker Swarm orchestration system, and today I want to review how can we do it in the more advanced Kubernetes environment. There are already some existing posts from Patrick Galbraith […]

Scaling Percona XtraDB Cluster with ProxySQL in Docker Swarm

In this post, we’ll look at scaling Percona XtraDB Cluster with ProxySQL in Docker Swarm. In my previous post, I showed how to employ Percona XtraDB Cluster on multiple nodes in a Docker network. The intention is to be able to start/stop nodes and increase/decrease the cluster size dynamically. This means that we should track running […]

RocksDB from Docker containers

This post will discuss how to get RocksDB from Docker containers to use with Percona Server for MongoDB. With our Percona Server for MongoDB 3.2 release, we made RocksDB a first class citizen. With this newly-available engine, we want to make it easy for everybody interested to try it. So it is now available in docker […]

Running Percona XtraDB Cluster in a multi-host Docker network

In this post, I’ll discuss how to run Percona XtraDB Cluster in a multi-host Docker network. With our release of Percona XtraDB Cluster 5.7 beta, we’ve also decided to provide Docker images for both Percona XtraDB Cluster 5.6 and Percona XtraDB Cluster 5.7. Starting one node is very easy, and not that different from starting Percona Server […]

Severe performance regression in MySQL 5.7 crash recovery

In this post, we’ll discuss some insight I’ve gained regarding severe performance regression in MySQL 5.7 crash recovery. Working on different InnoDB log file sizes in my previous post: https://www.percona.com/blog/2016/05/31/what-is-a-big-innodb_log_file_size/ I tried to understand how we can make InnoDB crash recovery faster, but found a rather surprising 5.7 crash recovery regression. Basically, crash recovery in MySQL […]

What is a big innodb_log_file_size?

In this post, we’ll discuss what constitutes a big innodb_log_file_size, and how it can affect performance. In the comments for our post on Percona Server 5.7 performance improvements, someone asked why we use innodb_log_file_size=10G with an indication that it might be too big? In my previous post, the example used innodb_log_file_size=15G. Is that too big? Let’s take a […]

Fixing MySQL scalability problems with ProxySQL or thread pool

In this blog post, we’ll discuss fixing MySQL scalability problems using either ProxySQL or thread pool. In the previous post I showed that even MySQL 5.7 in read-write workloads is not able to maintain throughput. Oracle’s recommendation to play black magic with innodb_thread_concurrency and innodb_spin_wait_delay doesn’t always help. We need a different solution to deal with this scaling problem. All […]

MySQL 5.7 read-write benchmarks

In this post, we’ll look at the results from some MySQL 5.7 read-write benchmarks. In my past blogs I’ve posted benchmarks on MySQL 5.5 / 5.6 / 5.7 in OLTP read-only workloads. For example: MySQL 5.7 sysbench OLTP read-only results: is MySQL 5.7 really faster? MySQL 5.7 primary key lookup results: is it really faster? ProxySQL […]

ProxySQL versus MaxScale for OLTP RO workloads

In this blog post, we’ll discuss ProxySQL versus MaxScale for OLTP RO workloads. Continuing my series of READ-ONLY benchmarks (you can find the other posts here and here), in this post I want to see how much overhead a proxy adds. At this In my opinion, there are only two solid proxy software options for […]

Query Rewrite plugin can harm performance

In this blog post, we’ll discuss how the Query Rewrite plugin can harm performance. MySQL 5.7 comes with Query Rewrite plugin, which allows you to modify queries coming to the server. (You can view the details here: https://dev.mysql.com/doc/refman/5.7/en/rewriter-query-rewrite-plugin.html.) It is based on the audit plugin API, and unfortunately it suffers from serious scalability issues (which seems […]

CPU governor performance

In this blog, we’ll examine how CPU governor performance affects MySQL. It’s been a while since we looked into CPU governors and with the new Intel CPUs and new Linux distros, I wanted to check how CPU governors affect MySQL performance. Before jumping to results, let’s review what drivers manage CPU frequency. Traditionally, the default driver […]

Evaluating Database Compression Methods: Update

This blog post is an update to our last post discussing database compression methods, and how they stack up against each other.  When Vadim and I wrote about Evaluating Database Compression Methods last month, we claimed that evaluating database compression algorithms was easy these days because there are ready-to-use benchmark suites such as lzbench. As […]

Downloading MariaDB MaxScale binaries

In this blog post we’ll discuss a caveat when downloading MariaDB MaxScale binaries. Following the previous performance results in my last two posts on sysbench and primary keys (https://www.percona.com/blog/2016/04/07/mysql-5-7-sysbench-oltp-read-results-really-faster/ and https://www.percona.com/blog/2016/03/28/mysql-5-7-primary-key-lookup-results-is-it-really-faster/), I wanted to measure overhead from proxies servers like ProxySQL and MaxScale. Unfortunately, I found that MaxScale binaries are not available without registering on the […]