Hi,

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

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 
MySQL : 
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

A very good overview on Prepared Statements, that may help you in 
understating the advantages and disadvantages of prepared statements can 
be found at 
http://www.mysqlperformanceblog.com/2006/08/02/mysql-prepared-statements/.

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.


TESTS AND MEASUREMENTS
========================

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:

                
http://www.opensips.org/pmwiki.php?n=Resources.TestsPrepareStatements


Best regards,
Bogdan

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to