Sun Java System Directory Server Enterprise Edition 6.0 管理指南

管理索引

本節說明如何管理特定屬性的索引,包含建立、修改與刪除索引的相關資訊。如需虛擬清單檢視 (VLV) 作業特有的程序,請參閱管理瀏覽索引

Procedure列出索引

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    若要列出現有的索引與其特性,請使用此指令:


    $ dsconf list-indexes -h host -p port -v suffix-DN
    

Procedure建立索引


備註 –

您無法建立新的系統索引。僅會保留目錄伺服器內部定義的現有系統索引。


您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 建立新的索引配置。

    使用 dsconf create-index 指令行公用程式,指定要編製索引的屬性,以配置新的索引資訊。

    例如,若要建立 preferredLanguage 屬性的索引項目,請使用此指令:


    $ dsconf create-index -h host -p port dc=example,dc=com preferredLanguage

    備註 –

    指令 dsconf create-index 會設定索引配置,但是不會實際建立搜尋所需的索引檔案。產生索引檔案會影響效能。在建立新的索引配置之後手動產生索引檔案,可讓您在編製索引程序期間有更多的控制權。

    建立索引時,請一律使用屬性的主要名稱。請勿使用屬性的別名。屬性的主要名稱為模式中所列的第一個屬性名稱,例如 userid 屬性的主要名稱為 uid


  2. (可選擇) 使用 dsconf set-index-prop 指令設定索引特性。

    dsconf create-index 指令會以預設特性建立索引。若要修改這些特性,請使用 dsconf set-index-prop 指令。如需修改索引特性的詳細資訊,請參閱修改索引

  3. 產生索引檔案。

    請參閱產生索引

  4. 針對所有要編製索引的伺服器重複上述步驟。

Procedure修改索引

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 修改索引特性。


    $ 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 子字串

    想要修改的其中一個特性可能是選擇性的 nsMatchingRule 屬性。此屬性包含伺服器已知的所有相符規則之 OID。它會啟用國際化索引的語言比較順序之 OID,以及 CaseExactMatch 等其他的相符規則。如需支援的語言環境清單與相關比較順序的 OID,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」

    如需索引配置屬性的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」

  2. 重新產生新的索引。

    請參閱產生索引

  3. 針對所有包含已修改屬性的索引之伺服器重複上述步驟。

Procedure產生索引

本程序會產生索引檔案,以讓新的或修改過的索引可進行搜尋。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 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 importdsconf reindex 或同時執行兩個指令,作業事件記錄會變大而可能對效能造成不良影響。


Procedure刪除索引

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 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

    刪除預設索引時請特別小心,此舉會影響目錄伺服器運作。

變更索引清單臨界值

搜尋速度緩慢可能肇因於系統索引清單大小超過了索引清單臨界值。索引清單臨界值是每個索引鍵值的上限數。若要判定是否已超過索引清單臨界值,請檢查存取記錄。存取記錄 RESULT 訊息結尾的 notes=U 旗標表示執行了未編製索引的搜尋。相同連線與作業的前一則 SRCH 訊息會指定使用的搜尋篩選。下列兩行範例會追蹤未編製索引的搜尋 cn=Smith,並傳回 10,000 個項目。已從訊息移除時間戳記。


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.0 Reference」中的「Tuning Indexes for Performance」

Procedure變更索引清單臨界值

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 調整索引清單臨界值。

    您可以在下列任何一個層級調整索引清單臨界值:

    • 實例層級:


      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,設定臨界值。如需更多資訊,請參閱目錄伺服器線上說明。

  2. 重新產生尾碼索引。

    請參閱產生索引

  3. 如果已為舊的所有 ID 臨界值調校資料庫的快取大小,且伺服器有足夠的實體記憶體,請考慮加資料庫的快取大小。

    根據所有 ID 臨界值增量範圍的 25%,增加資料庫的快取大小。

    亦即,如果所有 ID 臨界值從 4000 提高到 6000,則可以增加資料庫的快取大小約 12 ½% 做為索引清單大小的增量。

    使用屬性 dbcachesize 設定資料庫的快取大小。憑經驗尋找最適大小,再將變更套用到生產伺服器。

重新編製尾碼的索引

如果索引檔案損毀,則必須重新編製尾碼的索引,以在對應資料庫目錄中重建索引檔案。您可以在目錄伺服器執行期間重新編製尾碼的索引,或重新初始化尾碼以重新編製尾碼的索引。

在目錄伺服器執行期間重新編製尾碼的索引

重新編製尾碼的索引時,伺服器會檢查尾碼包含與重建索引檔案的所有項目。尾碼的內容在重新編製索引期間為唯讀。由於伺服器必須掃描整個尾碼以尋找要重新編製索引的每個屬性,因此若尾碼有百萬個項目,本程序可能需要數小時。時間長度也會隨配置的索引而定。此外,在重新編製尾碼的索引期間無法使用索引,且伺服器的效能會受影響。

Procedure重新編製尾碼上的所有索引

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    重新編製尾碼上的所有索引。


    $ dsconf reindex -h host -p port suffix-DN
    

    例如,若要初始化 dc=example,dc=com 尾碼上的所有索引,請使用此指令:


    $ dsconf reindex -h host -p port dc=example,dc=com

重新初始化以重新編製尾碼的索引

重新初始化尾碼時會匯入新內容,亦即尾碼內容會遭取代且會建立新的索引檔案。由於所有屬性會在項目載入時平行編製索引,因此重新初始化尾碼會比重新編製多個屬性的索引還要快。但是請注意,重新初始化尾碼期間將無法使用尾碼。

Procedure透過重新初始化重新編製尾碼的索引

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 設定參照,並使尾碼變成唯讀模式中所述,將尾碼設為唯讀。

  2. 備份至 LDIF中所述,將整個尾碼匯出至 LDIF 檔案。

  3. 從 LDIF 檔案匯入資料中所述,匯入相同的 LDIF 檔案以重新初始化尾碼。

    初始化期間無法使用尾碼。初始化完成之後,便可以使用所有配置的索引。

  4. 設定參照,並使尾碼變成唯讀模式中所述,使尾碼再次可以寫入。