4.4. 粒度の細かい ID リストサイズ


大規模なデータベースでは、一部のクエリーが大量の CPU および RAM リソースを消費する可能性があります。パフォーマンスを向上させるために、nsslapd-idlistscanlimit 属性を使用して、データベース内のすべてのインデックスに適用されるデフォルトの ID スキャン制限を設定できます。ただし、特定インデックスの制限や、ID リストの不使用を定義すると便利な場合があります。nsIndexIDListScanLimit 属性を使用して、さまざまなタイプの検索フィルターの ID リストスキャン制限を個別に設定できます。
たとえば、制限を設定するには、objectClass 属性で、nsIndexIDListScanLimit パラメーターを DN cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config に追加します。
nsIndexIDListScanLimit 属性は複数値であり、次のパラメーターリストを値として取ります。
nsIndexIDListScanLimit: limit=NNN [type=eq[,sub,...]] [flags=AND[,XXX,...]] [values=val[,val,...]]
  • limit: ID リストの最大サイズ。有効な値は以下のとおりです。
    • -1: 無制限。
    • 0: インデックスを使用しない。
    • 1 から最大 32 ビットの整数 (2147483647): ID の最大数。
  • type: 任意。インデックスのタイプ。eqsubpres など。値はインデックス定義に指定された実際の nsIndexType のいずれかにする必要があります。たとえば、nsIndexType=eq が定義されていない場合、type=eq は使用できません。
  • flags: 任意。スキャン制限を適用する動作を変更するフラグ。有効な値は以下のとおりです。
    • AND: 属性が AND 句に含まれる検索のみにスキャン制限を適用します。
    • OR: 属性が OR 句に含まれる検索のみにスキャン制限を適用します。
  • : 任意。制限を適用するために検索フィルターと一致する必要がある値のコンマ区切りリスト。一致は一度に 1 回ずつ行われるため、いずれかの値が一致すると値は一致します。
    値は、一度に 1 つのタイプでのみ使用する必要があります。
    値はインデックスタイプに対応する必要があり、インデックスが適用される属性の構文に対応する必要があります。たとえば、整数ベースの属性 uidNumber を指定し、この属性が eq のインデックスになっている場合は、type=eq values=abc を使用できません。
    値にスペース、コンマ、NULL、またはエスケープが必要なその他の値が含まれている場合は、LDAP フィルターエスケープ構文を使用する必要があります。バックスラッシュ (\) の後に文字の 2 桁の 16 進 コードを続けます。次の例では、DN 値のコンマが \2C でエスケープされています。
    nsIndexIDListScanLimit: limit=0 type=eq values=uid=user\2Cou=People\2Cdc=example\2Cdc=com

例4.1 nsIndexIDListScanLimit の設定

オブジェクトクラス inetOrgPerson を含む 1,000 万のエントリーを持つ大規模なデータベースでは、(&(objectClass=inetOrgPerson)(uid=user)) を検索すると、objectClass=inetOrgPerson に一致する 1,000 万の ID すべてを含む ID リストが最初に作成されます。データベースがフィルターの 2 つ目の部分を適用すると、結果リストで uid=user に一致するオブジェクトが検索されます。この場合、特定のインデックスの制限を定義するか、ID リストをまったく使用しないと便利です。
AND 句で objectClass=inetOrgPerson の ID リストが作成されないように設定するには、次の nsIndexIDListScanLimit を追加します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
changetype: modify
replace: nsIndexIDListScanLimit
nsIndexIDListScanLimit: limit=0 type=eq flags=AND values=inetOrgPerson

modifying entry "cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config"
AND 句で使用する場合、objectClass=inetOrgPerson の ID リストは作成されません。他のすべての状況では、nsslapd-idlistscanlimit の値が適用されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.