2011/1/6 Howard Chu <[email protected]>: > Steeg Carson wrote: >> >> 2011/1/4 Quanah Gibson-Mount<[email protected]>: >>> >>> --On Tuesday, January 04, 2011 1:43 AM +0100 Steeg Carson >>> <[email protected]> wrote: >>> >>>> I simulate this on my database just right now: >>> >>> I suggest you read: >>> >>> <http://www.openldap.org/lists/openldap-technical/201011/msg00146.html> >>> >>> to understand how indices and their slots work. >>> >> >> As I now understand, the entire index for one attribute (e.g. >> objectClass) is "split" in several indexes. They holds for each >> path/node (resp. DN, but not leaf) an separate index for this >> attribute with all "hits" for his subtree (and for onelevel too). > > No. Only the dn2id table maintains any notion of nodes and subtrees. All > indices are global to the database and have no notion of scope.
But what does mean (from http://www.openldap.org/lists/openldap-technical/201011/msg00146.html): "Ordinarily at each level of the tree we keep an index tallying all of the children beneath that point. In back-bdb this index is used for subtree searches and for onelevel searches." So if I do a search, I'll get every time ALL results (ID's) from the index for the searched value. If my search uses additionally a searchbase the slapd takes all ID's and lookup in id2entry.bdb to get the DN for the ID and compare? > >> If I do an ldapsearch with -b "cn=ownPath,ou=root" the slapd takes the >> index which is bound on this node/DN? >> >> In my DIT are 470812 entires. >> >> The objectClass=subEngine exists 104384 times in the entire directory >> (ou=root). >> The objectClass=subEngine exists only 1 time under "cn=ownPath,ou=root", > > By default an index slot can only maintain 65535 records before it overflows > and loses precision. Once it loses precision, you tend to get results like > this. If you need to accomodate larger indices you can tweak a constant in > back-bdb/back-bdb.h and recompile. You'll probably also need to increase > LDAP_PVT_THREAD_STACK_SIZE. > > Another workaround, without recompiling, would be to sort your entries such > that all of the entries of the subEngine class are loaded in contiguous > order. > Can you recommend a good book, where I can read all such things and understand, how openldap really works? This are all very important things for design and operation. Thanks for helping Steeg
