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

Sveta Smirnova
Sveta joined Percona in 2015. Her main professional interests are problem solving, working with tricky issues, bugs, finding patterns that can solve typical issues quicker and teaching others how to deal with MySQL issues, bugs and gotchas effectively. Before joining Percona Sveta worked as a Support Engineer in the MySQL Bugs Analysis Support Group in MySQL AB-Sun-Oracle. She is the author of the books "MySQL Troubleshooting" and "MySQL Cookbook, 4th Edition".

Open Source Databases on Big Machines: Does READ COMMITTED Scale on 144 Cores?

In the second post in my series on open source databases on big machines, we’ll look at whether READ COMMITTED scales with multiple cores. The default transaction level for InnoDB is REPEATABLE READ. A more permissive level is  READ COMMITTED, and is known to work well. While the  REPEATABLE READ level maintains the transaction history up to the start of the transaction, […]

PostgreSQL and MySQL: Millions of Queries per Second

This blog compares how PostgreSQL and MySQL handle millions of queries per second. Anastasia: Can open source databases cope with millions of queries per second? Many open source advocates would answer “yes.” However, assertions aren’t enough for well-grounded proof. That’s why in this blog post, we share the benchmark testing results from Alexander Korotkov (CEO of […]

WiredTiger B-Tree versus WiredTiger In-Memory: Q & A

In this blog, I will provide answers to the Q & A for the WiredTiger B-Tree versus WiredTiger In-Memory webinar. First, I want to thank everybody for attending the October, 13 webinar. The recording and slides for the webinar are available here. Below is the list of questions that I wasn’t able to fully answer […]

MySQL Replication Troubleshooting: Q & A

In this blog, I will provide answers to the Q & A for the MySQL Replication Troubleshooting webinar. First, I want to thank everybody for attending the August 25 webinar. Below is the list of your questions that I wasn’t able to answer during the webinar, with responses: Q: Hi Sveta. One question: how is […]

InnoDB Troubleshooting: Q & A

In this blog, I will provide answers to the Q & A for the InnoDB Troubleshooting webinar. First, I want to thank everybody for attending the August 11 webinar. The recording and slides for the webinar are available here. Below is the list of your questions that I wasn’t able to answer during the webinar, […]

Introduction into storage engine troubleshooting: Q & A

In this blog, I will provide answers to the Q & A for the “Introduction into storage engine troubleshooting” webinar. First, I want to thank everybody for attending the July 14 webinar. The recording and slides for the webinar are available here. Below is the list of your questions that I wasn’t able to answer […]

Troubleshooting configuration issues: Q & A

In this blog, I will provide answers to the Q & A for the Troubleshooting configuration issues webinar. First, I want to thank you for attending the June, 9 webinar. The recording and slides for the webinar are available here. Below is the list of your questions that I wasn’t able to answer during the webinar, […]

InnoDB locks and transaction isolation level

What is the difference between InnoDB locks and transaction isolation level? We’ll discuss it in this post. Recently I received a question from a user about one of my earlier blog posts. Since it wasn’t sent as a comment, I will answer it here. The question: > I am reading your article: > https://www.percona.com/resources/technical-presentations/troubleshooting-locking-issues-percona-mysql-webinar > Full table […]

Troubleshooting hardware resource usage webinar: Q & A

In this blog, I provide answers to the Q & A for the Troubleshooting hardware resource usage webinar. First, I want to thank everybody who attended the May 26 webinar. The recording and slides for the webinar are available here. Below is the list of your questions that I wasn’t able to answer during the webinar, […]

Troubleshooting locking issues webinar: Q & A

In this blog, I will provide answers to the Q & A for the Troubleshooting locking issues webinar. First, I want to thank you for attending the May, 12 webinar. The recording and slides for the webinar are available here. Below is the list of your questions that I wasn’t able to answer during the webinar, […]

EXPLAIN FORMAT=JSON wrap-up

This blog is an EXPLAIN FORMAT=JSON wrap-up for the series of posts I’ve done in the last few months. In this series, we’ve discussed everything unique to EXPLAIN FORMAT=JSON. I intentionally skipped a description of members such as table_name, access_type  or select_id, which are not unique. In this series, I only mentioned in passing members that […]

Introduction to MySQL troubleshooting basic techniques webinar: Q & A

In this blog, I will answer questions posed in my recent introduction to MySQL troubleshooting basic techniques webinar. Thank you for attending my March 10 MySQL troubleshooting webinar “Introduction to MySQL troubleshooting: basic techniques,” which is the second in the “MySQL Troubleshooting Webinar” series. The recording and slides for the webinar are available here. Here […]

Introduction to MySQL Troubleshooting Webinar: Q & A for How to Create a Test Setup

Thank you for attending my March 2 MySQL troubleshooting webinar “Introduction to troubleshooting: How to create test setup,” which is the first in the “MySQL Troubleshooting Webinar” series. The recording and slides for the webinar are available here. Here is the list of your questions that I wasn’t able to answer during the webinar, with […]

EXPLAIN FORMAT=JSON: nested_loop makes JOIN hierarchy transparent

Once again it’s time for another EXPLAIN FORMAT=JSON is cool! post. This post will discuss how EXPLAIN FORMAT=JSON allows the nested_loop command to make the JOIN operation hierarchy transparent. The regular EXPLAIN  command lists each table that participates in a  JOIN  operation on a single row. This works perfectly for simple queries:

You can see […]

EXPLAIN FORMAT=JSON: buffer_result is not hidden!

Time for another entry in the EXPLAIN FORMAT=JSON is cool! series. Today we’re going to look at how you can view the buffer result using JSON (instead of the regular EXPLAIN command. Regular EXPLAIN does not identify if SQL_BUFFER_RESULT was used at all. To demonstrate, let’s run this query:

Now, let’s compare it to this query:

Notice there […]

EXPLAIN FORMAT=JSON knows everything about UNIONs: union_result and query_specifications

Ready for another post in the EXPLAIN FORMAT=JSON is Cool series! Great! This post will discuss how to see all the information that is contained in optimized queries with UNION using the union_result and query_specifications commands.   When optimizing complicated queries with UNION, it is easy to get lost in the regular EXPLAIN  output trying to identify which part […]

EXPLAIN FORMAT=JSON has details for subqueries in HAVING, nested selects and subqueries that update values

Over several previous blog posts, we’ve already discussed what information the  EXPLAIN FORMAT=JSON output provides for some subqueries. You can review those discussions here, here and here. EXPLAIN FORMAT=JSON shows many details that you can’t get with other commands. Let’s now finish this topic and discuss the output for the rest of the subquery types. First, let’s look at the subquery […]