.TH SLAPD-MDB 5 "RELEASEDATE" "OpenLDAP LDVERSION"
-.\" Copyright 2011-2013 The OpenLDAP Foundation All Rights Reserved.
+.\" Copyright 2011-2016 The OpenLDAP Foundation All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.\" $OpenLDAP$
.SH NAME
.BR slapd (8)
uses OpenLDAP's Lightning Memory-Mapped DB (LMDB) library to store data.
It relies completely on the underlying operating system for memory
-management and does no caching of its own.
+management and does no caching of its own. It is the recommended
+primary database backend.
.LP
The \fBmdb\fP backend is similar to the \fBhdb\fP backend in that
it uses a hierarchical database layout which
The default is
.BR LOCALSTATEDIR/openldap\-data .
.TP
-\fBenvflags \fR{\fBnosync\fR,\fBnometasync\fR,\fBwritemap\fR,\fBmapasync\fR}
+\fBenvflags \fR{\fBnosync\fR,\fBnometasync\fR,\fBwritemap\fR,\fBmapasync\fR,\fBnordahead\fR}
Specify flags for finer-grained control of the LMDB library's operation.
.RS
.TP
.I nosync
is set.
.RE
+.RS
+.TP
+.B nordahead
+Turn off file readahead. Usually the OS performs readahead on every read
+request. This usually boosts read performance but can be harmful to
+random access read performance if the system's memory is full and the DB
+is larger than RAM. This option is not implemented on Windows.
+.RE
.TP
\fBindex \fR{\fI<attrlist>\fR|\fBdefault\fR} [\fBpres\fR,\fBeq\fR,\fBapprox\fR,\fBsub\fR,\fI<special>\fR]
dynamically by LDAPModifying "cn=config" automatically causes rebuilding
of the indices online in a background task.
.TP
+.BI maxentrysize \ <bytes>
+Specify the maximum size of an entry in bytes. Attempts to store
+an entry larger than this size will be rejected with the error
+LDAP_ADMINLIMIT_EXCEEDED. The default is 0, which is unlimited.
+.TP
.BI maxreaders \ <integer>
Specify the maximum number of threads that may have concurrent read access
to the database. Tools such as slapcat count as a single thread,
files should have.
The default is 0600.
.TP
+.BI multival_hi \ <integer>
+Specify the number of values above which a multivalued attribute is
+stored in a separate table. Normally entries are stored as a single
+blob inside the database. When an entry gets very large or contains
+attributes with a very large number of values, modifications on that
+entry may get very slow. Splitting the large attributes out to a separate
+table can improve the performance of modification operations.
+The default is UINT_MAX, which keeps all attributes in the main blob.
+.TP
+.BI multival_lo \ <integer>
+Specify the number of values below which a multivalued attribute
+that was stored in a separate table is moved back into the main
+entry blob. If a modification deletes enough values to bring an
+attribute below this threshold, its values will be removed from the
+separate table and merged back into the main entry blob.
+The default is UINT_MAX, which keeps all attributes in
+the main blob.
+.TP
+.BI rtxnsize \ <entries>
+Specify the maximum number of entries to process in a single read
+transaction when executing a large search. Long-lived read transactions
+prevent old database pages from being reused in write transactions, and
+so can cause significant growth of the database file when there is
+heavy write traffic. This setting causes the read transaction in
+large searches to be released and reacquired after the given number
+of entries has been read, to give writers the opportunity to
+reclaim old database pages. The default is 10000.
+.TP
.BI searchstack \ <depth>
Specify the depth of the stack used for search filter evaluation.
Search filters are evaluated on a stack to accommodate nested AND / OR
.B mdb
backend honors access control semantics as indicated in
.BR slapd.access (5).
-.SH NOTES
-This is an early release; the database file format or other
-characteristics may change incompatibly in future releases.
.SH FILES
.TP
.B ETCDIR/slapd.conf