EmergencyEMERGENCY? Get 24/7 Help Now!

How we work on High Performance MySQL Second Edition

 | November 12, 2007 |  Posted In: Events and Announcements


Baron have been updating you a lot about chapter by chapter progress so I should not repeat it, instead I thought it would be a good idea to write a bit about how we work on the book.

Generally, quite similar to the previous book this is long process, which is probably what happens when busy people attempt to get time to write a book. I started working on book Outline with Andy Oram (our great editor) about a year ago.

I think I can do decent outlines and I often do my presentations as outline which help me to plan what I should write about. But I get stuck with explanatory writing as soon as it gets much larger than a blog post… Especially when it comes to explaining obvious stuff – I surely could not be the teacher for first graders. Also neither me not Vadim are native English speakers which expected to give Andy a lot of hard editorial work.

Due to these problems, to get better book and get the book out faster we wanted to expand the team and were talking to a few people. At this stage we were joined by Arjen Lentz who has great background for authoring a book being involved in MySQL Support, MySQL Consulting, Documentation, MySQL Training while working for MySQL and now on his own.

Finally we were joined by Baron who could also add value to the Book. I always liked Barons blog posts which were often very explanatory easy to understand and full with examples. They also were large, which means the must be not only good writer but also fast writer. Another strong point of Baron are having experience working with a lot of other database technologies as well as being author of very popular tools – Innotop and MySQL Toolkit.

Initially Andy proposed us to work on the book in classical way, meaning we distribute chapters among us and so each gets few chapters to write. This however did not work quite so well because the skills were a lot different – Arjen and Baron are great at writing. I’m good at finding out less than known facts and practical sides of things and Vadim is good with benchmarks examples and digging source code for answers.

So this is exactly how we ended up splitting out the work and which seems to be going quite well now – I write rather verbose plan for the aspects which need to be covered providing links to presentations blog posts etc. Baron or Arjen use it to write most of chapters which get further in depth review by me and examples benchmarks and further details added by Vadim.

Now we have good progress and getting close to technical review. This is another interesting part. Book needs good reviewers and reviewers with different backgrounds both to fix mistakes and explain things which are not clear enough. On the other hand we have to be selective with reviewers both because we need to be sure we have enough bandwidth to work with them and target all of their points and because there is only so much money in the book budget which is spent on review process.

Anyway it is exciting to book getting close and finally we see light in the end of the tunnel. Generally speaking working on the book proves to be significantly more demanding and time consuming than I anticipated.

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.


  • I really enjoyed the first edition, though I found it funny when I would be reading about something that could give me a huge performance increase only to find the disclaimer at the end that read something to the effect of, “but this would not work for an auction website.” I ran into this a few times in the book, and unfortunately an auction website is exactly the application I must optimize. Of course, we have developed some of our own tricks both inside and outside of mysql for this purpose such as making clever use of distributed application level locking and some really deep voodoo with mysql binlogs, but I am hoping the second edition will give a lot more tips for when high availability and synchronous data are unavoidable necessities. For us it looks like NDB is the best way forward, so I’m hoping that the promise of including it contains a lot of hints, because there’s not that much out there yet…

  • John,

    Indeed Jeremy was mostly working with applications with less data consistency and accuracy requirements than auction site. Though it does not mean the book is bad it is simply different application may need different approaches and book focuses on more common sense which has data treatment approach which can be summarized as “It is not Money” 🙂

  • Hi Peter,

    I can’t wait for the new edition.
    I am very new to MySQL but have 15+ years experience on Oracle, and proprietary database like FAME, Vision etc and I am digging a lot in MySQL and doing performance runs right now.

    If you are looking for someone like me to review I would love to do it.

  • Peter,

    I read the first edition of the book. I was wondering where I could direct feedback. I thought the chapters on setting up replication and earlier chapters on the layout, hardware/software considerations, and how the query optimizer engine works were very good. However, I felt the chapter on query optimization was a little thin/weak.

    It was not very clear how you would go about optimizing a query using desc/explain. Most of your examples are very limited and do not have a real world application. Not many of us are running queries on single tables that contain 10k or less rows.

    I think the query optimization chapter could benefit greatly by testing it against a real-world database that contains a table with contacts/customers and have that table linked to a couple other tables by its primary key. The other tables could be items like sales, incident/rma, preferences. Then have examples of querying the contacts based on some kind of information in the foreign tables, or querying for information in a foreign table that is filtered by multiple fields in the foreign table and contacts table.

    Examples of when to use joins over the where clause would also be helpful.

    I would also enjoy a discussion of a query that is filtering on multiple fields and how you would build an index for it. Having a situation where the index would not include all the fields and why would also be very informative.

    Thanks for your consideration.

  • Ryan,

    To make it clear I did not work on the First edition. In fact this new edition have completely new set of authors.

    The Query Optimization chapter was rewritten and has much more info though this is something you always would want more. I guess you could easily write book on advanced query optimization alone 🙂

  • Add me to the “happy to help review” pile. Mine would be a higher level tech review plus readability — years of programming on top of the DB stack but not a DBA … and my mother was an English literature teacher. Might make for a useful perspective … or might not.

    Either way, I’m very much looking forward to your update of this book!

  • Hi Folks.
    I had heard about this book and raced to O’Reilly’s to purchase a PDF version. Sadly Version 2 has not been released Yet :<

    But I am REALLY looking forward to reading it when it does become available. I have several customers all using MySQL version 5 and I’d love to get the most out of these applications.

    Thanks for all of the great work in advance, and for sharing your knowledge.


  • Dave,

    Indeed book now is in production and is available for preorder on amazon.com – you can use link on the side to get where.
    It should be out in mid June – about a month from now.

Leave a Reply