跳转至

CLEAR SPACE

CLEAR SPACE语句用于清空图空间中的点和边,但不会删除图空间本身以及其中的 Schema 信息。

Note

建议在执行CLEAR SPACE操作之后,立即执行SUBMIT JOB COMPACT操作以提升查询性能。需要注意的是,COMPACT 操作可能会影响查询性能,建议在业务低峰期(例如凌晨)执行该操作。

权限要求

只有 God 角色的用户可以执行CLEAR SPACE语句。

注意事项

  • 数据清除后,如无备份,无法恢复。使用该功能务必谨慎。
  • CLEAR SPACE不是原子性操作。如果执行出错,请重新执行,避免残留数据。
  • 图空间中的数据量越大,CLEAR SPACE消耗的时间越长。如果CLEAR SPACE的执行因客户端连接超时而失败,可以增大 Graph 服务配置storage_client_timeout_ms参数的值。
  • CLEAR SPACE的执行过程中,向该图空间写入数据的行为不会被自动禁止。这样的写入行为可能导致CLEAR SPACE清除数据不完全,残留的数据也可能受到损坏。

Note

社区版 NebulaGraph 不支持在运行CLEAR SPACE的同时禁止写入。

Enterpriseonly

企业版 NebulaGraph 支持先运行SET VARIABLE read_only=true阻止向 NebulaGraph 写入数据,再运行CLEAR SPACE。数据清除成功后运行SET VARIABLE read_only=false即可重新允许写入。

语法

CLEAR SPACE [IF EXISTS] <space_name>;
参数/选项 说明
IF EXISTS 检查待清空的图空间是否存在,如果图空间存在,则继续执行清空操作;如果图空间不存在,则完成执行,并且提示执行成功,不会提示图空间不存在。若不设置该选项,当图空间不存在时,CLEAR SPACE语句会执行失败,系统会报错。
space_name 要清除数据的图空间名称。

示例:

CLEAR SPACE basketballplayer;

保留的数据

图空间中,CLEAR SPACE不会删除的数据包括:

  • Tag 信息。
  • Edge type 信息。
  • 原生索引和全文索引的元数据。

下面的执行示例明确展示了CLEAR SPACE会删除与保留的数据。

# 进入图空间 basketballplayer。
nebula[(none)]> use basketballplayer;
Execution succeeded

# 查看 Tag 和 Edge type。
nebula[basketballplayer]> SHOW TAGS;
+----------+
| Name     |
+----------+
| "player" |
| "team"   |
+----------+
Got 2 rows

nebula[basketballplayer]> SHOW EDGES;
+----------+
| Name     |
+----------+
| "follow" |
| "serve"  |
+----------+
Got 2 rows

# 统计图空间中的数据。
nebula[basketballplayer]> SUBMIT JOB STATS;
+------------+
| New Job Id |
+------------+
| 4          |
+------------+
Got 1 rows

# 查看统计结果。
nebula[basketballplayer]> SHOW STATS;
+---------+------------+-------+
| Type    | Name       | Count |
+---------+------------+-------+
| "Tag"   | "player"   | 51    |
| "Tag"   | "team"     | 30    |
| "Edge"  | "follow"   | 81    |
| "Edge"  | "serve"    | 152   |
| "Space" | "vertices" | 81    |
| "Space" | "edges"    | 233   |
+---------+------------+-------+
Got 6 rows

# 查看 Tag 索引。
nebula[basketballplayer]> SHOW TAG INDEXES;
+------------------+----------+----------+
| Index Name       | By Tag   | Columns  |
+------------------+----------+----------+
| "player_index_0" | "player" | []       |
| "player_index_1" | "player" | ["name"] |
+------------------+----------+----------+
Got 2 rows

# ----------------------- CLEAR SPACE 分割线 -----------------------
# 执行 CLEAR SPACE 清空图空间 basketballplayer。
nebula[basketballplayer]> CLEAR SPACE basketballplayer;
Execution succeeded

# 更新统计信息。
nebula[basketballplayer]> SUBMIT JOB STATS;
+------------+
| New Job Id |
+------------+
| 5          |
+------------+
Got 1 rows

# 查看统计信息。Tag 和 Edge type 还存在,但所有的点和边都没了。
nebula[basketballplayer]> SHOW STATS;
+---------+------------+-------+
| Type    | Name       | Count |
+---------+------------+-------+
| "Tag"   | "player"   | 0     |
| "Tag"   | "team"     | 0     |
| "Edge"  | "follow"   | 0     |
| "Edge"  | "serve"    | 0     |
| "Space" | "vertices" | 0     |
| "Space" | "edges"    | 0     |
+---------+------------+-------+
Got 6 rows

# 查看 Tag 索引,它们依然存在。
nebula[basketballplayer]> SHOW TAG INDEXES;
+------------------+----------+----------+
| Index Name       | By Tag   | Columns  |
+------------------+----------+----------+
| "player_index_0" | "player" | []       |
| "player_index_1" | "player" | ["name"] |
+------------------+----------+----------+
Got 2 rows (time spent 523/978 us)

最后更新: July 6, 2023