[NEW] Database enhancements, a 25% performance boost

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[NEW] Database enhancements, a 25% performance boost

Bogdan-Andrei Iancu

Part of the work to address the most problematic (read "slow") parts of
OpenSIPS, several improvements were done on the DB areas (performing DB

The end result is a 25% boost in DB queries - a 25% less time spent in
running DB queries.

1. Prepared statements

Starting with OpenSIPS 1.5.0 the internal DB API provides support for
prepared statements. First DB module to implement prepared statements is
DB_MYSQL module. See more about the concept of prepared statements in

A very good overview on Prepared Statements, that may help you in
understating the advantages and disadvantages of prepared statements can
be found at

The current implementation is based on an original patch submited by
Victor Gamov; the patch was completely reworked, re-designed and improved.

2. Memory Fragmentation

A complete rework of the structures from internal DB API was done in
order to reduce the number of memory fragments used by a DB result:
    previous number = 1 + 2 + no_cols + 1 + no_rows
    current number = 3
The number of memory fragments is now constant and what is more
important is the fact that we avoid keep allocating very small chunks
(like 8 bytes).

This will reduce the fragmentation of the private memory due of
continues DB queries -> OpenSIPS is now a real long distance runner,
with no side effect or performance decrease in time.


A set of tests were conducted in order to determine the real gain of
prepared statements. The tests tried to cover various case -
combinations between complexity of a query and the amount of data
transfered by a query.

Following the measurement with the new prepared statements a 25 %
increase in performance. See the entire set of tests as well as the
result interpretation:


Best regards,

Users mailing list
[hidden email]