Skip to content

Commit

Permalink
add start id in VID
Browse files Browse the repository at this point in the history
  • Loading branch information
whitewum committed Aug 30, 2021
1 parent 6b03940 commit 585c6d5
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
22 changes: 21 additions & 1 deletion docs-2.0/1.introduction/3.vid.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,28 @@ VID的生成工作完全交给应用端,有一些通用的建议:

- 如果个别记录的主键特别长,但绝大多数记录的主键都很短的情况,不要将`FIXED_STRING(<N>)``N`设置成超大,这会浪费大量内存和硬盘,也会降低性能。此时可通过BASE64,MD5,hash编码加拼接的方式来生成。

- 如果用hash方式生成int64 VID在有10亿个点的情况下,发生碰撞的概率大约是1/10。边的数量与碰撞的概率无关。
- 如果用hash方式生成int64 VID在有10亿个点的情况下,发生hash冲突的概率大约是1/10。边的数量与碰撞的概率无关。

## 定义和修改VID的数据类型

VID的数据类型必须在[创建图空间](../3.ngql-guide/9.space-statements/1.create-space.md)时定义,且一旦定义无法修改。

## "查询起始点"(`start vid`)与全局扫描

绝大多数情况下,Nebula Graph 的查询语句(`MATCH`, `GO`, `LOOKUP`)的执行计划,必须要通过一定方式找到查询起始点的 VID (`start vid`)。

定位 `start vid` 只有两种方式:

1. 例如 `GO FROM "player100" OVER` 是在语句中显式的指明 `start vid` 是 "player100";

2. 例如, `LOOKUP ON player WHERE player.name == "Tony Parker"` 或者 `MATCH (v:player {name:"Tony Parker"}) `,是通过属性 `player.name` 的索引来定位到 `start vid`


!!! caution 不能在没有 `start vid` 情况下进行全局扫描;

例如 `match (n) return n;` 会返回错误,因为此时无法定位到 `start vid`;这是一个全局扫描,因此被禁止。





1 change: 1 addition & 0 deletions docs-2.0/8.service-tuning/4.plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
Nebula Graph {{ nebula.release }} 实现了基于规则的执行计划。用户无法改变执行计划,无法进行查询的预编译(及相应的计划缓存),无法通过指定索引来加速索引。

要查看执行计划及执行概要,请参考[EXPLAIN和PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md)

0 comments on commit 585c6d5

Please sign in to comment.