4.3. インデックススキャン制限の設定
大規模なディレクトリーでは、検索結果リストが膨大になる可能性があります。100 万の inetorgperson エントリーを持つディレクトリーには、(objectclass=inetorgperson) のようなフィルターで返される 100 万のエントリーがあり、
sn
属性のインデックスには、100 万以上のエントリーがあります。
データベースから長い ID リストを読み込むと、検索パフォーマンスが大幅に低下します。設定パラメーター nsslapd-idlistscanlimit は、キーがプライマリーインデックス全体に一致すると見なされる前に読み取られる ID の数に制限を設定します (つまり、検索は、リソース制限の異なるセットを持つインデックスなしの検索として扱われます)。
大規模なインデックスでは、インデックスに一致する検索をインデックス化されていないの検索として扱う方が実際には効率的です。検索操作では、ディレクトリーとほぼ同じサイズのインデックスとディレクトリー自体を検索するのではなく、結果 (ディレクトリー全体) を処理するために 1 か所を検索することのみが必要です。
nsslapd-idlistscanlimit 属性のデフォルト値は 4000 であり、一般的な範囲のデータベースサイズとアクセスパターンで優れたパフォーマンスが得られます。通常、この値を変更する必要はありません。データベースインデックスが 4000 エントリーより若干大きくても、全体的なディレクトリーよりも大幅に小さい場合には、スキャン制限を引き上げると検索が改善されます。そうでないとデフォルトの制限である 4000 に達します。
一方、制限を下げると、4000 エントリーの上限に達する検索が大幅に高速になりますが、すべてのエントリーをスキャンする必要はありません。
4.3.1. コマンドラインを使用したインデックススキャン制限の設定
コマンドラインを使用してインデックススキャン制限を設定するには、以下を実行します。
- たとえば、検索操作中に Directory Server が検索するエントリー ID の数を 8000 に設定するには、次のようにします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --idlistscanlimit=8000
- Directory Server インスタンスを再起動します。
# dsctl instance_name restart
4.3.2. Web コンソールを使用したインデックススキャン制限の設定
Web コンソールを使用してインデックススキャン制限を設定するには、以下を実行します。
- Web コンソールで Directory Server ユーザーインターフェイスを開きます。詳細は、『Red Hat Directory Server Administration Guide』のLogging Into Directory Server Using the Web Consoleセクションを参照してください。
- インスタンスを選択します。
- Global Database Configuration を選択します。タブで、
- ID List Scan Limit フィールドの値を更新します。
- Restart Instance を選択します。ボタンをクリックし、