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

Peter Zaitsev
Peter managed the High Performance Group within MySQL until 2006, when he founded Percona. Peter has a Master's Degree in Computer Science and is an expert in database kernels, computer hardware, and application scaling.

Master-Master or Master with Many Slaves

I just found post by Kevin, in which he criticizes Master-Master approach, finding Master with many slaves more optimal. There is surely room for master-N-slaves systems but I find Master-Master replication much better approach in many cases. Kevin Writes “It requires extra hardware thats sitting in standby and not being used (more money and higher […]

Using delayed JOIN to optimize count(*) and LIMIT queries

In many Search/Browse applications you would see main (fact) table which contains search fields and dimension tables which contain more information about facts and which need to be joined to get query result. If you’re executing count(*) queries for such result sets MySQL will perform the join even if you use LEFT JOIN so it […]

MySQL Master-Master replication manager released

The MySQL Master-Master replication (often in active-passive mode) is popular pattern used by many companies using MySQL for scale out. Most of the companies would have some internal scripts to handle things as automatic fallback and slave cloning but no Open Source solution was made available. Few months ago we were asked to implement such […]

Speaking on RIT-2007, Moscow, Russia

I’ve been invited to speak at RIT-2007 which stands for “Russian Internet Technologies” conference. It takes place 16-17 April in Moscow, Russia. It looks like this is going to be biggest Russian conference on Internet technologies so far with many large Russian Internet projects sending their delegates. You can check out conference sessions schedule here. […]

MySQL Replication and Slow Queries

I just filed a bug regarding slow queries executed by replication thread are not being logged to the slow query log. This is not a big deal but it is ugly little gotcha which I think few people know about. It is especially bad if you’re using tools to analyze slow query log to find […]

PHP Sessions – Files vs Database Based

One may think changing PHP session handler from file based to database driven is fully transparent. In many cases it is, sometimes however it may cause some unexpected problems as happened to one of our customers. If you use file based sessions PHP will lock session file for whole script execution duration, which means all […]

Only Design What You Can Implement

Working with various projects using MySQL I observe a lot of problems are coming from very simple fact – product is designed containing features which developers do not know how to implement effectively. In many companies you would see “waterfall” like approach for web application development at least on business-development boundary. Business people would dream […]

MySQL Large Query Cache Size Problems

During last couple of months I had number of consulting projects with MySQL Query Cache being source of serious problems. One would see queries both for MyISAM and Innodb tables mysteriously stalling for few seconds with “NULL” in State column. These could be troubleshooted to waiting on Query Cache which at the same time had […]

Onsite consulting in Sillicon Valley anyone ?

I’ve already wrote we do not generally do a lot of on-site onsite consulting, but as I’m anyway going to be speaking at MySQL Users Conference anyway it may be good time for some onsite jobs. In fact I have already scheduled visits on Friday, Monday and Tuesday following the conference but I can do […]

MySQL Releases first real Community Release

Few days ago MySQL released MySQL 5.0.37 which I would call first real Community Version, because unlike previous versions which were released from the same source tree as Enterprise MySQL this one has some community features added, which is great. Also over last half a year MySQL seems to have organized resources for Community Engineering […]

MySQL MyISAM Active Active Clustering – looking for trouble ?

Reading last few days worth of planet MySQL and commenting on some entries as you can see. The post by Oli catches my attention. There is also PDF with more details available Oli is saying you can use MySQL with Active Active Clustering and MyISAM tables if you follow certain rules like enabling external locking, […]

MySQL Query Cache and prepared statements – support comming ?

Looking at post by Konstantin Osipov we should finally get Query Cache working with prepared statements in MySQL 5.1 The interesting thing Konstantin notes it just took few days to fix it – I believe MySQL Support Team alone spent much more times explaining customers why is it not done or troubleshooting cases with wrong […]

Box for some tests anyone ?

We’d like to test few things in regards to MySQL and Innodb scalability with multiple CPUs but we seems to be short of boxes right now, all stuff we have access to is in production right now which makes it not good for benchmark. Could anyone lend us access to the box with at least […]

Mail clients and Databases

I get a lot of mail and I prefer to store it for long time if not forever. With modern hard disk sizes it should not be problem at all, but because of how mailing programs are written it causes a lot of problems. I’ve tried a lot of programs – Kmail, Evolution, Thunderbird on […]

Figuring out what limits MySQL Replication

Today I was cloning the master using LVM Snapshot and found it was taking quite a while to catch up, which highlighted replication could be the limiting factor for this system quite soon, so I decided to check what is limiting MySQL Replication speed. My first idea was to check it based on slow query […]

Is it query which needs to be optimized ?

Last few days I had a lot of a lot of questions at MySQL Performance Forum as well as from our customers regarding query optimization… which had one thing in common – It is not query which needed to be optimized. Way too frequently people design schema first and then think how the queries they […]

Power of MySQL Storage Engines

Where does real power of MySQL Storage Engines, and pluggable storage engines as MySQL 5.1 lays ? It is very much advertised this allows third parties to create their own storage engines and we can see solutions as Solid and PBXT . Plus there is Falcon storage engine being developed inside MySQL. All of these […]

System size and Performance Optimization

Performance optimization is never ending story, you can virtually always find something else to optimize but while on generic system, not tuned by expert you often can get significant performance increase in the matter of hours further performance improvements become more and more time consuming and expensive and gains smaller. This observation does not only […]

MySQL Consulting – Being on your own

About half a year have passed since me and Vadim have left MySQL to do MySQL Consulting on our own. Bunch of people have been wondering about our experiences so I thought it would be worth to share it here.

MySQL Error control changes

In MySQL 5.0 mainly error control was improved, such as strict mode was added to change famous MySQL behavior of cutting too large strings, too big numbers and allowing you to use dates such as February 31st. In one case however reverse change was done – in regards to storage engine initialization. Previously if you […]