2월의 할인 혜택은 다음과 같습니다. 인덱스 어드바이저 서비스 에서 발견된 몇 가지 버그를 수정한 후 업데이트했습니다. 앞으로도 인덱스 어드바이저 서비스(무슨 일이죠?). 일반적으로 다음 유지 관리 릴리스에서 볼 수 있는 Index Advisor의 수정 사항을 이제 매월 사용할 수 있습니다.
누구를 위한 서비스인가요? 언제 사용해야 하나요?
http://index-advisor.couchbase.com/
반복해서 말씀드리지만,
이 서비스는 DBA, 개발자, 아키텍트가 쿼리 성능을 최적화하고 SLA를 충족하는 데 도움이 되는 인덱스 권장 사항을 제공합니다.
이 서비스는 다음과 같은 경우에 유용합니다:
- 읽지 않으려면 인덱스 생성 규칙를 살펴보고, 이를 이해하고, 구현하여 쿼리/질문/워크로드에 적합한 인덱스를 찾아보세요.
- 아직 최신 Couchbase 6.5 서버를 다운로드하고 싶지 않습니다.
- 사용 중입니다. 구형 카우치베이스 버전(버전 5.5,6.0) 쿼리에 적합한 인덱스를 만드는 데 도움이 필요합니다.
- 인덱스에 대한 조언을 생성하고 싶습니다. 버킷을 만들지 않고 또는 스키마 또는 데이터를 업로드합니다.
새로운 기능은 무엇인가요?
카우치베이스 서버 6.5 서버를 다운로드하고 쿼리 워크벤치에서 인덱스 어드바이저를 사용할 수 있는 경우에도, 이 인덱스 어드바이저는 최신 버전(보기 좋은 UI는 없지만 다음과 같은 결함이 수정된 버전)입니다.
1. 가상 키 공간에 대한 인덱스 조언
2. 삭제/병합/업데이트 문을 위한 가상 키 공간을 지원하는 인덱스 어드바이저
이 두 가지 수정 사항을 모두 적용하면 다음과 같은 쿼리가 수정됩니다.
1 |
조언 삭제 FROM aa 어디 유형="맥주" ; |
를 제공하던
1 2 3 4 5 6 7 8 9 10 |
<span 스타일="색상: #ff0000">[ { "#operator": "조언", "조언": { "#operator": "IndexAdvice", "adviseinfo": [] }, "query": "delete FROM aa where type=\"beer\" ;" } ]</span> |
이제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "결과": [ { "#operator": "조언", "조언": { "#operator": "IndexAdvice", "adviseinfo": { "권장_인덱스": { "커버링_인덱스": [ { "index_statement": "`aa`(`유형`) 상에 인덱스 adv_type 생성", "키스페이스_알리어스": "aa" } ], "인덱스": [ { "index_statement": "`aa`(`유형`) 상에 인덱스 adv_type 생성", "키스페이스_알리어스": "aa", "추천_규칙": "인덱스 키는 술어 유형의 순서를 따릅니다: 2. 같음/없음/누락." } ] } } }, "query": "delete FROM aa where type=\"beer\" ;" } ] } |
3. Meta() 표현식에서 식별자를 제거하는 인덱스 어드바이저
다음과 같은 쿼리의 경우:
1 |
선택 * FROM `맥주-샘플` d 어디 분할(메타(d).id, ":")[0] 같은 "%cafe" |
우리는 얻을 것입니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<span 스타일="색상: #ff0000">{ "adviseResult": [ { "current_indexes": [ { "index_statement": "`beer-sample`에 주 인덱스 beer_primary 생성", "키스페이스_알리어스": "beer-sample_d" } ], "권장_인덱스": { "인덱스": [ { "index_statement": "`beer-sample`(split((meta(`d`).`id`), ':')[0])에 adv_split_meta_d_id_0 인덱스를 생성합니다.", "키스페이스_알리어스": "beer-sample_d", "추천_규칙": "인덱스 키는 술어 유형의 순서를 따릅니다: 9. 함수 인덱스." } ] } } ] }</span> |
이제 이를 다음과 같이 수정했습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "결과": [ { "#operator": "조언", "조언": { "#operator": "IndexAdvice", "adviseinfo": { "권장_인덱스": { "인덱스": [ { "index_statement": "`beer-sample`(split((<span style="색상: #3366ff">meta(`self`)</span>.`id`), ':')[0])", "키스페이스_알리어스": "beer-sample_d", "추천_규칙": "인덱스 키는 술어 유형의 순서를 따릅니다: 9. like." } ] } } }, "query": "SELECT * FROM `beer-sample` d where SPLIT(meta(d).id, \":\")[0] like \"%cafe\"" } ] } |
를 클릭하세요.
4. 쿼리: 조언 기능 혼란스러운 메시지
혼란스러운 오류 메시지가 보다 상세하고 명확한 설명으로 대체되었습니다.
5. USE 인덱스 키워드가 있는 쿼리에 조언을 사용하면 잘못된 오류가 반환됩니다.
1 |
조언 선택 id,URL,주소,title,도시,이름,국가,공개_좋아요 에서 bucket0 <강한>사용 색인 (def_primary)</강한> 어디 일부 p in 공개_좋아요 만족 p 같은 "Ge%" END AND 유형 = "호텔" 주문 by id, URL, 주소, title, 도시 DESC, 이름, 국가 |
제공에 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span 스타일="색상: #ff0000">[ { "#operator": "조언", "조언": { "#operator": "IndexAdvice", "adviseinfo": [ { "권장_인덱스": "현재 인덱스 권장 사항 없음: 키 스페이스를 찾을 수 없습니다." } ] }, "query": "select id,url,address,title,city,name,country,public_likes FROM bucket0 use index (def_primary) 여기서 public_likes의 일부 p는 \"Ge%\"와 같은 p를 만족합니다." END AND type = \"hotel\" id, url, address, title, city DESC, name, country 순서로 정렬" } ]</span> |
이제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "결과": [ { "#operator": "조언", "조언": { "#operator": "IndexAdvice", "adviseinfo": { "권장_인덱스": { "커버링_인덱스": [ { "index_statement": "CREATE INDEX adv_type_DISTINCT_public_좋아요_id_url_city_name_title_address_country_public_좋아요 ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_좋아요` END,`id`,`url`,`city`,`name`,`title`,`address`,`country`,`public_좋아요`)"", "키스페이스_알리어스": "bucket0" } ], "인덱스": [ { "index_statement": "CREATE INDEX adv_type_DISTINCT_public_likes ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_likes` END)", "키스페이스_알리어스": "bucket0", "추천_규칙": "인덱스 키는 술어 유형의 순서를 따릅니다: 2. 같음/없음/누락, 6. 배열 술어." } ] } } }, "query": "select id,url,address,title,city,name,country,public_likes FROM bucket0 use index (def_primary) 여기서 public_likes의 일부 p는 \"Ge%\"와 같은 p를 만족합니다." END AND type = \"hotel\" id, url, address, title, city DESC, name, country 순서로 정렬" } ] } |
몇 가지 작은 개선 사항도 추가되었습니다.
사용해 보시고 인덱스 어드바이저 서비스에서 추천하는 인덱스에 문제가 있는 경우 이 블로그에 댓글로 추가할 수 있습니다.
인덱스 어드바이저 기능에 대해 자세히 알아보세요:
https://www.couchbase.com/blog/index-advisor-service/
https://www.couchbase.com/blog/n1ql-index-advisor-improve-query-performance-and-productivity/
https://www.couchbase.com/blog/index-advisor-for-query-workload/
https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/advise.html
https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/advisor.html
https://docs.couchbase.com/server/6.5/tools/query-workbench.html#index-advisor