2장. 뷰의 성능 개선
뷰 기반 계층 구조의 성능은 계층 자체의 구성과 디렉터리 트리(DIT)의 항목 수에 따라 달라집니다.
가상 DIT 보기를 사용하는 경우 일반적으로 성능에 약간의 변경 사항이 있을 수 있습니다(표준 DIT에서 동일한 검색의 일부 백분율로 인해). 검색에서 뷰를 호출하지 않으면 성능에 영향을 미치지 않습니다. 배포 전에 예상되는 검색 패턴 및 로드에 대해 가상 DIT 보기를 테스트합니다.
뷰를 조직의 범용 탐색 도구로 사용하려는 경우 뷰 필터에 사용되는 속성을 인덱싱하는 것이 좋습니다.
또한 뷰에서 하위 필터 평가에 사용할 VLV(가상 목록 보기) 인덱스를 구성할 수 있습니다.
뷰를 위해 특별히 디렉터리의 다른 부분을 튜닝할 필요가 없습니다.
2.1. 명령줄을 사용하여 뷰의 성능을 개선하는 인덱스 생성 링크 복사링크가 클립보드에 복사되었습니다!
뷰는 지정된 필터를 기반으로 검색 결과에서 파생됩니다. 필터의 일부는 nsViewFilter 에서 명시적으로 제공되는 속성입니다. 나머지 필터는 보기에 포함된 실제 항목의 entryid 및 parentid 작동 속성을 찾고 있는 항목 계층 구조를 기반으로 합니다.
(|(parentid=search_base_id)(entryid=search_base_id))
검색된 특성( entryid,parentid 또는 nsViewFilter 의 속성)이 인덱싱되지 않은 경우 검색은 부분적으로 인덱싱되지 않고 Directory Server는 전체 디렉터리 트리를 검색하여 일치하는 항목을 검색합니다.
뷰 성능을 향상하려면 다음과 같이 인덱스를 만듭니다.To improve views performance, create the indexes as follows:
-
entryid에 대한 같음 인덱스 (eq)를 만듭니다.parentid속성은 기본적으로 시스템 인덱스에서 인덱싱됩니다. -
nsViewFilter테스트의 필터가 존재하는 경우(attribute=*) 테스트 중인 속성에 대한 존재 인덱스 (이전)를 만듭니다. 디렉터리 항목의 소수성에 표시되는 속성에서만 이 인덱스 유형을 사용해야 합니다. -
nsViewFilter의 필터가 같음(attribute=value)을 테스트 중인 경우 테스트 중인 속성에 대한 같음 인덱스 (eq)를 만듭니다. -
nsViewFilter의 필터가 하위 문자열(attribute=value*)을 테스트하면 테스트 중인 속성에 대한하위 문자열 인덱스 (하위)를 만듭니다. -
nsViewFilter의 필터가 approximation(attribute~=value)을 테스트 중인 경우 테스트 중인 속성에 대해대략적인인덱스 (대량 )를 만듭니다.
예를 들어 다음 보기 필터를 사용하는 경우 다음을 수행합니다.
nsViewFilter: (&(objectClass=inetOrgPerson)(roomNumber=*66))
기본적으로 수행되는 같음 인덱스 인 objectClass 와 하위 문자열 인덱스가 있는 roomNumber 가 있어야 합니다.
사전 요구 사항
- view 필터에서 사용하는 속성을 알고 있습니다.
절차
선택 사항: 백엔드를 나열하여 인덱스할 데이터베이스를 결정합니다.
# dsconf instance_name backend suffix list dc=example,dc=com (userroot)선택한 데이터베이스 이름(가져오기)을 기록해 둡니다.
선택한 백엔드 데이터베이스에 대해
dsconfig유틸리티를 사용하여 인덱스 구성을 생성합니다.특히 국제화된 인스턴스의 경우 특성 이름, 인덱스 유형, 선택적으로 일치하는 규칙을 지정하여 데이터 정렬 순서(OID)를 설정합니다.
# dsconf instance_name backend index add --attr roomNumber --index-type sub userrootview 필터에 사용된 각 속성에 대해 이 단계를 반복합니다.
새 인덱스를 적용하려면 데이터베이스를 다시 인덱싱합니다.
# dsconf 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 필터가 포함되어 있지 않아야 합니다.