OpenLDAP MDB vs HDB performance: Difference between revisions
Line 44: | Line 44: | ||
==== 2 Concurrent Searches ==== | ==== 2 Concurrent Searches ==== | ||
mdb: 2. | mdb: 2.23s 2.12s total: 4.35s avg: 2.175s | ||
hdb-shm: 2. | hdb-shm: 2.23s 2.15s total: 4.38s avg: 2.19s | ||
==== 4 Concurrent Searches ==== | ==== 4 Concurrent Searches ==== | ||
mdb: 2. | mdb: 2.64s 2.92s 2.93s 2.45s total: 10.94s avg: 2.735s | ||
hdb-shm: 2. | hdb-shm: 2.38s 3.01s 2.96s 2.51s total: 10.86s avg: 2.715s | ||
==== 8 Concurrent Searches ==== | ==== 8 Concurrent Searches ==== | ||
mdb: 4. | mdb: 4.39s 3.37s 4.47s 4.78s 2.11s 4.57s 3.37s 2.79s total: 29.85s avg: 3.73125s | ||
hdb-shm: 4. | hdb-shm: 4.94s 3.13s 5.01s 5.36s 5.35s 5.10s 3.71s 3.44s total: 36.04s avg: 4.505s | ||
=== Write performance === | === Write performance === |
Revision as of 00:43, 7 March 2013
Article Information |
---|
This article applies to the following ZCS versions. |
Zimbra OpenLDAP Server
Performance differences between the mdb and hdb backends for OpenLDAP
Using real-world client data, I've compiled some brief performance differences between using the mdb and hdb backends to OpenLDAP with Zimbra. This particular client has 25,208 entries in their LDAP database. I dumped their accesslog and converted it to LDIF to give me a full weeks worth of real change data, and then ran that back against the database. This results in approximately 28,000 modifications performed against the DB. Tests were done using OpenLDAP 2.4.34.
Database configuration information
The following documents the pertinent configuration information for MDB and HDB.
MDB configuration
For MDB, the following database flags were set:
writemap nometasync
HDB configuration
For both single node and master node tests, hdb had a 1GB cache defined via DB_CONFIG. This was more than sufficient for the DB in all tests. Two sets of tests were done, one with a shared memory key for BDB, and one without. The back-hdb database was configured to fully cache all entries (cachesize, idlcachesize settings for cn=config).
Database load
This is the amount of time to load the database using slapadd -q
mdb: 0m11.237s hdb: 0m38.727s hdb-shm: 0m26.677s
Advantage: MDB. It is at least 2.37 times faster loading the data than hdb.
Database size
Size of database on disk after slapadd completes. For hdb, this includes the hdb cache as well as db size. mdb has no cache.
mdb: 296MB hdb: 627MB hdb-shm: 627MB
Advantage: MDB. It is 2.11 times smaller than the hdb database.
Search rates
Search rates are done searching the entire DB. A parallel Makefile was used to trigger searches from up to 16 idle servers.
Single Query Search time
This is the time to search the entire db via ldapsearch. Note that with hdb, since it has to preload the cache, two times are given. cold (Cache not loaded) and hot (cache loaded). mdb never needs to preload the cache.
mdb: 0m1.435s hdb cold: 0m5.304s hdb hot: 0m3.103s hdb-shm cold: 0m5.220s hdb-shm hot: 0m1.472s
Advantage MDB. It is 1.03 times faster than hdb on the hot hdb search when hdb uses SHM keys. Note that hdb performance degrades as the number of concurrent searches increases, while mdb performance is static.
2 Concurrent Searches
mdb: 2.23s 2.12s total: 4.35s avg: 2.175s hdb-shm: 2.23s 2.15s total: 4.38s avg: 2.19s
4 Concurrent Searches
mdb: 2.64s 2.92s 2.93s 2.45s total: 10.94s avg: 2.735s hdb-shm: 2.38s 3.01s 2.96s 2.51s total: 10.86s avg: 2.715s
8 Concurrent Searches
mdb: 4.39s 3.37s 4.47s 4.78s 2.11s 4.57s 3.37s 2.79s total: 29.85s avg: 3.73125s hdb-shm: 4.94s 3.13s 5.01s 5.36s 5.35s 5.10s 3.71s 3.44s total: 36.04s avg: 4.505s
Write performance
The following write performance was done with the 28,000 modification LDIF described above. It was done two ways -- Single node (no replication setup) and Master node (accesslog delta-sync database enabled). Time to do all 28,000 modifications is tracked. In the master node scenario, the size of the resulting accesslog DB is also compared.
Single node
mdb: 0m14.013s hdb: 13m3.394s hdb-shm: 12m4.885s
Advantage: MDB. It is 51.73 times faster than hdb at performing 28,000 modifications.
Master node
mdb: 0m20.628s hdb: 25m46.477s hdb-shm: 24m39.658s
Advantage: MDB. It is 71.73 times faster than hdb at performing 28,000 modifications.
Master node accesslog DB sizes
mdb: 100M hdb: 234M hdb-shm: 234MB
Advantage: MDB. It is 2.34 times smaller than the hdb accesslog DB.