Pinba is a MySQL storage engine that acts as a realtime monitoring/statistics server for PHP using MySQL as a read-only interface.

It accumulates and processes data sent over UDP by multiple PHP processes and displays statistics in a nice human-readable form of simple "reports", also providing read-only interface to the raw data in order to make possible generation of more sophisticated reports and stats.

With Pinba extension users also can measure particular parts of the code using timers with arbitrary tags.

Pinba is not a debugging tool in a common sense, since you're not supposed to do debugging on production servers, but its main goal is to help developers to monitor performance of PHP scripts, locate bottlenecks in realtime and direct developers' attention to the code that really needs it.

Added rusage to timers and timer reports.

Greatly improved locking and performance.

All reports now support conditions (min_time/max_time and request tags).

All CPU-intensive operations with package data are now done using the thread pool (spreading across all available CPU cores).

Switched to Protobuf-C version to improve performance (this also removes one more library dependency).

Fixed bug in tag report generation (some data was added, but never deleted from the report).

Removed pinba_tag_report_timeout (make sure to remove it from my.cnf, or MySQL won't start!).

1.0.0 - 17 Aug 2012

Added tag_report2 and tag2_report2 mostly replicating their first versions, but with additional grouping by server name and hostname. (Denis Yeldandi)

Implemented thread pool. ATM the pool is used only when converting Protobuf packets to Pinba internal structs and when deleting outdated data from the request pool. In most cases this means incoming/outdated data is processed MUCH faster and the pools are locked for MUCH less time.