第2章 ビューのパフォーマンスの改善
ビューベースの階層のパフォーマンスは、階層自体の構造とディレクトリーツリー (DIT) のエントリー数に依存します。
一般的には、仮想 DIT ビューを使用する場合に、(標準の DIT での同等の検索に対して数パーセントポイント以内で) パフォーマンスに関して若干の変化が発生する可能性があります。検索でビューを呼び出さない場合は、パフォーマンスへの影響はありません。導入の前に、予想される検索パターンおよび負荷に対して仮想 DIT ビューをテストします。
組織内でビューを汎用ナビゲーションツールとして使用する場合は、ビューフィルターで使用される属性をインデックス化することが推奨されます。
さらに、ビューでサブフィルターの評価に使用する仮想リストビュー (VLV) インデックスを設定できます。
特にビュー用に、ディレクトリーの他の部分をチューニングする必要はありません。
2.1. コマンドラインを使用してビューのパフォーマンスを改善するためのインデックスの作成
ビューは指定のフィルターに基づいて検索結果から派生します。フィルターの一部は nsViewFilter
で明示的に指定される属性です。フィルターの残りの部分はエントリー階層に基づいており、ビューに含まれる実際のエントリーの entryid
および parentid
操作属性を検索します。
(|(parentid=search_base_id)(entryid=search_base_id)
検索された属性 (entryid
、parentid
、または nsViewFilter
の属性) のいずれかにインデックスが付けられていない場合、検索は部分的にインデックスが解除され、Directory Server はディレクトリーツリー全体で一致するエントリーを検索します。
ビューのパフォーマンスを改善するには、以下のようにインデックスを作成します。
-
entryid
の等式インデックス (eq
) を作成します。parentid
属性は、デフォルトでシステムインデックスでインデックス化されます。 -
nsViewFilter
テストにフィルターがある場合 (attribute=*
) は、テスト中の属性について、存在インデックス(pres
) を作成します。このインデックスタイプは、少数のディレクトリーエントリーに表示される属性でのみ使用する必要があります。 -
nsViewFilter
テスト等価 (attribute=value
) のフィルターの場合、テストする属性に対して 等価インデックス (eq
) を作成します。 -
nsViewFilter
のフィルターがサブ文字列をテストする場合 (attribute=value*
) は、テストする属性の substring index (sub
) を作成します。 -
nsViewFilter
でフィルターが近似値をテストする場合 (attribute~=value
)、テストされている属性のapproximate index (approximate
) を作成します。
たとえば、以下の view フィルターを使用する場合は、以下を実行します。
nsViewFilter: (&(objectClass=inetOrgPerson)(roomNumber=*66))
デフォルトで行われる等価インデックスで objectClass
にインデックスを付け、部分文字列インデックスで roomNumber
にインデックスを付ける必要があります。
前提条件
- ビューフィルターで使用する属性に注意してください。
手順
オプション: バックエンドをリスト表示し、データベースをインデックス化します。
#
dsconf -D "cn=Directory Manager" instance_name backend suffix list
dc=example,dc=com (userroot)(括弧で) 選択したデータベース名を書き留めておきます。
選択したバックエンドのデータベースの
dsconfig
ユーティリティーを使用してインデックス設定を作成します。特に国際化されたインスタンスの場合、属性名、インデックスタイプと、任意で照合順序 (OID) を設定するためのマッチングルールを指定します。
#
dsconf -D "cn=Directory Manager" instance_name backend index add --attr roomNumber --index-type sub userroot
view フィルターで使用される属性ごとに、このステップを繰り返します。
新規インデックスを適用するためにデータベースを再インデックスします。
#
dsconf -D "cn=Directory Manager" instance_name backend index reindex userroot
検証
ビューで使用するフィルターが同じ標準ディレクトリーツリーに基づく検索を実行します。
#
ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b dc=example,dc=com (&(objectClass=inetOrgPerson)(roomNumber=*66))
#ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b dc=example,dc=com "(&(objectClass=inetOrgPerson)(roomNumber=*66))"
/var/log/dirsrv/slapd-instance_name/access
.のアクセスログを見る。検索の
RESULT
にはnote=U
またはPartially Unindexed Filter
が詳細に含まれていないはずです。
関連情報