この節では、特定の属性のインデックスを管理する方法について説明します。この節では、インデックスの作成、変更、削除について説明します。仮想リスト表示 (VLV) 操作に固有の手順については、「ブラウズインデックスの管理」を参照してください。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
新しいシステムインデックスを作成することはできません。システムインデックスは、Directory Server によって内部的に定義されているものだけが保持されます。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
新しいインデックス設定を作成します。
dsconf create-index コマンド行ユーティリティーを使用して、インデックスを作成する属性を指定し、新しいインデックス情報を設定します。
たとえば preferredLanguage 属性のインデックスエントリを作成するには、次のコマンドを使用します。
$ dsconf create-index -h host -p port dc=example,dc=com preferredLanguage |
コマンド dsconf create-index はインデックス設定を行いますが、実際に検索に必要なインデックスファイルを作成するわけではありません。インデックスファイルを生成するとパフォーマンスに影響を与える可能性があります。インデックス作成手順をより厳密に制御するには新しいインデックス設定が作成されたあとに、手動でインデックスファイルを生成します。
インデックスを作成する場合は、常に属性の基本名を使用します。属性の別名は使用しないでください。属性の基本名は、スキーマでその属性に一覧表示された最初の名前です。たとえば、userid 属性では uid が基本名になります。
(省略可能) インデックスのプロパティーを設定するには dsconf set-index-prop コマンドを使用します。
dsconf create-index コマンドはデフォルトのプロパティーでインデックスを作成します。これらのプロパティーを変更する場合は、dsconf set-index-prop コマンドを使用します。インデックスのプロパティーの変更の詳細については、「インデックスを変更する」を参照してください。
インデックスファイルを生成します。
「インデックスを生成する」を参照してください。
インデックスを作成するすべてのサーバーに対し、前の手順を繰り返します。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
インデックスのプロパティーを変更します。
$ dsconf set-index-prop -h host -p port suffix-DN attr-name property:value |
たとえば、preferredLanguage インデックスの近似インデックス approx-enabled を有効にするには、次のコマンドを使用します。
$ dsconf set-index-prop -h host -p port dc=example,dc=com preferredLanguage approx-enabled:on |
各インデックスについて次のプロパティーを変更できます。
eq-enabled 等価
pres-enabled プレゼンス
sub-enabled 部分文字列
変更する必要がありそうなプロパティーの 1 つに、オプションの nsMatchingRule 属性があります。この属性には、サーバーで既知のマッチングルールの OID が含まれます。これは国際化インデックスの言語照合順序の OID と、CaseExactMatch のようなその他のマッチングルールを有効にします。サポートされるロケールとそれらの関連付けられた照合順序の OID の一覧については、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』を参照してください。
インデックス設定属性の詳細については、『Sun Java System Directory Server Enterprise Edition 6.3 Reference 』を参照してください。
新しいインデックスを再生成します。
「インデックスを生成する」を参照してください。
変更した属性インデックスを含むすべてのサーバーに対し、前の手順を繰り返します。
次の手順では、新しいインデックスまたは変更したインデックスを検索できるように、インデックスファイルを生成します。属性のインデックス設定を変更する場合は、その属性をフィルタとして含むすべての検索のインデックスが作成されるとは限りません。その属性を含む検索が確実に実行されるようにするには、次の手順のコマンドを使用して、属性のインデックス設定を作成または変更するたびに、既存のインデックスを再生成します。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
インデックスファイルは、次のいずれかの方法で生成します。
オンラインで新しいインデックスファイルを生成します。
$ dsconf reindex -h host -p port [-t attr] suffix-DN |
-t は、すべての属性ではなく、指定した属性のみインデックスを再生成するように指定します。
たとえば、preferredLanguage インデックスを再生成するには、次のように入力します。
$ dsconf reindex -h host -p port -t preferredLanguage dc=example,dc=com |
dsconf reindex コマンドの実行中も、サーバーからサフィックスの内容を使用できます。ただし、コマンドが完了するまで検索のインデックスは作成されません。インデックスの再生成は多くのリソースを消費するタスクであるため、サーバー上のその他の処理のパフォーマンスに影響を生じることがあります。
オフラインで新しいインデックスファイルを生成します。
$ dsadm reindex -t attr instance-path suffix-DN |
たとえば、preferredLanguage インデックスを再生成するには、次のように入力します。
$ dsadm reindex -t preferredLanguage /local/ds dc=example,dc=com |
サフィックスを再初期化することによって、オフラインで速やかにすべてのインデックスを再生成します。
サフィックスを再初期化すると、すべてのインデックスファイルが自動的に再生成されます。ディレクトリのサイズによりますが、多くの場合、複数の属性のインデックスを再生成するよりサフィックスの再初期化の方が高速です。ただし、初期化時にはサフィックスを使用できません。詳細については、「再初期化によるサフィックスのインデックスの再生成」を参照してください。
dsconf import か dsconf reindex のいずれか、または複数のサフィックスで並行して両方のコマンドを実行すると、トランザクションログが大きくなり、パフォーマンスに悪影響を及ぼすことがあります。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
$ dsconf delete-index -h host -p port suffix-DN attr-name |
たとえば、次のコマンドは preferredLanguage 属性のすべてのインデックスを削除します。
$ dsconf delete-index -h host -p port dc=example,dc=com preferredLanguage |
デフォルトのインデックスを削除する場合は、Directory Server の機能に影響する可能性があるため、十分に注意してください。
システムインデックスリストのサイズがインデックスリストのしきい値を超えると、検索が遅くなることがあります。インデックスリストのしきい値は各インデックスキーの値の最大数です。インデックスリストのしきい値のサイズを超えているかどうかを判断するには、アクセスログを調べます。アクセスログ RESULT メッセージの末尾の notes=U フラグは、インデックスを使用しない検索が実行されたことを示します。同じ接続と操作の前の SRCH メッセージは、使用された検索フィルタを示します。次の 2 行の例は、10,000 エントリを返す cn=Smith のインデックスを使用しない検索を追跡します。メッセージからタイムスタンプが削除されています。
conn=2 op=1 SRCH base="o=example.com" scope=0 filter="(cn=Smith)" conn=2 op=1 RESULT err=0 tag=101 nentries=10000 notes=U |
システムで頻繁にインデックスリストのしきい値を超える場合は、しきい値を増加して、パフォーマンスを向上させることを検討してください。次の手順では dsconf set-server-prop コマンドを使用して、all-ids-threshold プロパティーを変更します。インデックスのチューニングと all-ids-threshold プロパティーの詳細については、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』の「Tuning Indexes for Performance」を参照してください。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
インデックスリストのしきい値を調整します。
次のレベルでインデックスリストのしきい値を調整できます。
インスタンスレベル
dsconf set-server-prop -h host -p port all-ids-threshold:value |
サフィックスレベル
dsconf set-suffix-prop -h host -p port suffix-DN all-ids-threshold:value |
エントリレベル
dsconf set-index-prop -h host -p port suffix-DN all-ids-threshold:value |
検索のタイプ別インデックスレベル
dsconf set-index-prop -h host -p port suffix-DN all-ids-threshold search-type:value |
search-type は次のいずれかになります。
eq-enabled 等価
pres-enabled プレゼンス
sub-enabled 部分文字列
all-ids-threshold プロパティーは近似インデックスには設定できません。
DSCC を使用して、検索タイプ別にインデックスレベルでしきい値を設定できます。詳細については Directory Server のオンラインヘルプを参照してください。
サフィックスインデックスを再生成します。
「インデックスを生成する」を参照してください。
データベースキャッシュサイズを古い all IDs しきい値に合わせて調整しており、サーバーに十分な物理メモリーがある場合は、データベースキャッシュサイズを増やすことをお勧めします。
データベースキャッシュサイズを、all IDs しきい値の増加量の 25 パーセント増加します。
つまり、 all IDs しきい値を 4000 から 6000 に増加した場合、インデックスリストのサイズの増加を見込んで、データベースキャッシュサイズを約 12 ½ パーセント増加できます。
データベースキャッシュサイズは属性 dbcachesize を使用して設定します。業務用サーバーに変更を適用する前に、実験して最適なサイズを見つけてください。
インデックスファイルが壊れた場合、または属性のインデックスを変更した場合、サフィックスのインデックスを再生成して、対応するデータベースディレクトリにインデックスファイルを再作成する必要があります。サフィックスのインデックスは、ディレクトリサーバーの実行中か、サフィックスの再初期化によって再生成できます。
サフィックスのインデックスの再生成を行うと、サーバーはサフィックスに含まれるすべてのエントリを調べ、インデックスファイルを再作成します。インデックスの再生成中、サフィックスの内容は読み取り専用になります。サーバーは、インデックスを再生成するすべての属性のサフィックス全体を走査する必要があり、数百万のエントリを持つサフィックスの場合、この処理には数時間かかることがあります。かかる時間も設定するインデックスによって異なります。さらに、サフィックスのインデックスの再生成中は、インデックスを使用できず、サーバーのパフォーマンスに影響があります。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
サフィックスのすべてのインデックスを再生成します。
$ dsconf reindex -h host -p port suffix-DN |
たとえば、dc=example,dc=com サフィックスのすべてのインデックスを初期化するには、次のコマンドを使用します。
$ dsconf reindex -h host -p port dc=example,dc=com |
サフィックスを再初期化すると、新しい内容がインポートされます。つまり、サフィックスの内容が置き換えられ、新しいインデックスファイルが作成されます。サフィックスの再初期化は、エントリのロード時に同時にすべての属性のインデックスが作成されるので、複数の属性のインデックスの再生成よりも速く実行することができます。ただし、再初期化中はサフィックスを使用できません。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
「リフェラルを設定し、サフィックスを読み取り専用にする」で説明するように、サフィックスを読み取り専用に設定します。
「LDIF へのバックアップ」で説明するように、サフィックス全体を LDIF ファイルにエクスポートします。
「LDIF ファイルからのデータのインポート」で説明するように、同じ LDIF ファイルをインポートして、サフィックスを再初期化します。
初期化中は、サフィックスを利用することはできません。初期化が完了すると、設定されたすべてのインデックスを利用できるようになります。
「リフェラルを設定し、サフィックスを読み取り専用にする」で説明するように、サフィックスをふたたび書き込み可能にします。