libdrizzle: A New Client Library for Drizzle and MySQL

Architecture and Technology, PHP and MySQL
Location: Ballroom C Level: Intermediate
Average rating: ****.
(4.00, 1 rating)

This new library currently supports MySQL 4.1 and later, and as the Drizzle protocol evolves, full support for the MySQL protocol will continue (including future versions). The reason for this is because there is a need for a fast low-level non-blocking client library. The library also addresses issues such of buffer and memory management, different levels of result caching, and different methods of using the library such as callback interfaces. The library is written in C, but interfaces are being written to extend it to other languages such as PHP and Perl.

I will start the session with a brief overview of non-blocking I/O, followed by a demonstration of the new library interface in PHP. I will show how connections can be pooled to run multiple MySQL queries in parallel, and then go over how an application can be structured to use this interface. This will be extremely beneficial for applications that need to make multiple time-consuming queries, especially over a high-latency network or when multiples servers are involved. This can lead to a significant drop in overall page response time for web applications. I will also cover proper buffer management, large blob streaming, and how to design your application to control what is cached during the response.

If time permits, I’ll touch on some of the protocol internals, and what changes we’ve made as enhancements in Drizzle. This includes the addition of strong checksums, pipelined queries, and the ability to process multiple queries in parallel for a single connection. I’d also like to touch on how the library can be used as a complete Drizzle/MySQL protocol library, and not just a client library. This enables the library to be used to write proxies for both Drizzle and MySQL, or a hybrid of the two.

Throughout the session I’ll do my best to answer any questions, including anything related to the MySQL or Drizzle protocols in general. I’ll finish up the session by asking for feedback on what users and developers would like to see for features in future development.

At the time of this writing (October 12), the C library is functional, but enhancements are still being made. The PHP interface is underway, and will be completed in November for similar talk being given at the OpenSQL Camp.

Current code can be found on Launchpad

Photo of Eric Day

Eric Day


Eric Day has been writing high-performance, multi-threaded servers for most of his career at Concentric, including complete HTTP/SSL, DNS, and IMAP implementations. He has also designed and implemented custom storage and database systems, from the protocol up through the application front-end. Most of his work has been done in clustered and distributed environments. When not hacking on code, he can be found running, biking, or enjoying a good vegan meal. You can read his blog and more at

Co-presented By:

O'Reilly Media MySQL/Sun Microsystems
  • Kickfire
  • Virident
  • Infobright, Inc
  • JasperSoft
  • Intel
  • Advanced Micro Devices
  • BIRT Exchange by Actuate
  • Calpont
  • Canonical
  • Continuent
  • Dolphin Interconnect Solutions
  • Facebook
  • HiT Software, Inc.
  • IBM
  • iDashboards
  • Oracle
  • Pentaho
  • R1Soft
  • Schooner Information Technology
  • SQLstream
  • Ticketmaster
  • Zmanda, Inc.
  • Linux Journal

Sponsorship Opportunities

For information on exhibition and sponsorship opportunities at the conference, contact Sharon Cordesse at

Download the MySQL Sponsor/Exhibitor Prospectus

Media Partner Opportunities

Download the Media & Promotional Partner Brochure (PDF) for information on trade opportunities with O'Reilly conferences or contact mediapartners@

Press and Media

For media-related inquiries, contact Maureen Jennings at

MySQL Conference Newsletter

To stay abreast of conference news and to receive email notification when registration opens, please sign up for the MySQL Conference newsletter.

Contact Us

View a complete list of MySQL contacts.