Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added slow query #695

Merged
merged 8 commits into from
Jul 15, 2021
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs-2.0/20.appendix/0.FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ Storage服务在毫秒级时间内多次收到插入或者更新同一点或边

### 是否支持停止或者中断慢查询

不支持。即使关闭了客户端,服务端仍会尽力把该查询执行完毕,无法中断
支持。详情请参见[终止查询](../3.ngql-guide/18.operation-and-maintenance-statements/6.kill-query.md)

### 能不能用中文字符做标识符,比如图空间、Tag、Edge type、属性、索引的名称?

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 终止查询

`KILL QUERY`命令可以终止正在执行的查询,常用于终止慢查询。

## 语法

```ngql
KILL QUERY (session=<session_id>, plan=<plan_id>);
```

- `session_id`:会话ID。
- `plan_id`:执行计划ID。

会话ID和执行计划ID可以唯一确定一个查询。二者可以通过[SHOW QUERIES](../7.general-query-statements/6.show/18.show-querise.md)语句获取。

## 示例

在一个会话中执行命令终止另一个会话中的查询:

```ngql
nebula> KILL QUERY(SESSION=1625553545984255,PLAN=163);
```

另一个会话中的查询会终止,并返回如下信息:

```ngql
[ERROR (-1005)]: Execution had been killed
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# SHOW QUERIES

`SHOW QUERIES`语句可以查看当前Session中正在执行的查询请求信息。

!!! note

如果需要终止查询,请参见[终止查询](../../18.operation-and-maintenance-statements/6.kill-query.md)。

## 注意事项

- `SHOW QUERIES`从本地缓存获取当前Session中查询的状态,几乎没有延迟。

- `SHOW ALL QUERIES`从Meta服务获取所有Session中的查询信息。这些信息会根据参数`session_reclaim_interval_secs`定义的周期同步到Meta服务,因此在客户端获取到的信息可能属于上个同步周期。

## 语法

```ngql
SHOW QUERIES;
cooper-lzy marked this conversation as resolved.
Show resolved Hide resolved
SHOW ALL QUERIES;
```

## 示例

```ngql
nebula> SHOW QUERIES;
+------------------+-----------------+--------+----------------------+----------------------------+----------------+-----------+-----------------+
| SessionID | ExecutionPlanID | User | Host | StartTime | DurationInUSec | Status | Query |
+------------------+-----------------+--------+----------------------+----------------------------+----------------+-----------+-----------------+
| 1625463842921750 | 46 | "root" | ""192.168.x.x":9669" | 2021-07-05T05:44:19.502903 | 0 | "RUNNING" | "SHOW QUERIES;" |
+------------------+-----------------+--------+----------------------+----------------------------+----------------+-----------+-----------------+

nebula> SHOW ALL QUERIES;
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+---------------------------------------------------------+
| SessionID | ExecutionPlanID | User | Host | StartTime | DurationInUSec | Status | Query |
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+---------------------------------------------------------+
| 1625456037718757 | 54 | "user1" | ""192.168.x.x":9669" | 2021-07-05T05:51:08.691318 | 1504502 | "RUNNING" | "MATCH p=(v:player)-[*1..4]-(v2) RETURN v2 AS Friends;" |
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+---------------------------------------------------------+

# 返回耗时TOP 10的查询。
nebula> SHOW ALL QUERIES | ORDER BY $-.DurationInUSec DESC | LIMIT 10;
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+-------------------------------------------------------+
| SessionID | ExecutionPlanID | User | Host | StartTime | DurationInUSec | Status | Query |
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+-------------------------------------------------------+
| 1625471375320831 | 98 | "user2" | ""192.168.x.x":9669" | 2021-07-05T07:50:24.461779 | 2608176 | "RUNNING" | "MATCH (v:player)-[*1..4]-(v2) RETURN v2 AS Friends;" |
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+-------------------------------------------------------+
| 1625456037718757 | 99 | "user1" | ""192.168.x.x":9669" | 2021-07-05T07:50:24.910616 | 2159333 | "RUNNING" | "MATCH (v:player)-[*1..4]-(v2) RETURN v2 AS Friends;" |
+------------------+-----------------+---------+----------------------+----------------------------+----------------+-----------+-------------------------------------------------------+
```

参数说明如下。

|参数|说明|
|:---|:---|
| `SessionID` | 会话ID。 |
| `ExecutionPlanID` | 执行计划ID。 |
| `User` | 执行查询的用户名。 |
| `Host` | 用户连接的服务器地址和端口。 |
| `StartTime` | 执行查询的开始时间。 |
| `DurationInUSec` | 执行查询的持续时长。单位:微秒。 |
| `Status` | 查询的当前状态。 |
| `Query` | 查询语句。 |
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
| readline-devel | 任意稳定版本 | - |
| ncurses-devel | 任意稳定版本 | - |
| zlid-devel | 任意稳定版本 | - |
| gcc | 7.1.0及以上 | 执行命令`gcc -v`检查版本。 |
| gcc | 7.5.0及以上 | 执行命令`gcc -v`检查版本。 |
| gcc-c++ | 任意稳定版本 | - |
| cmake | 3.5.0及以上 | 执行命令`cmake --version`检查版本。 |
| cmake | 3.9.0及以上 | 执行命令`cmake --version`检查版本。 |
| gettext | 任意稳定版本 | - |
| curl | 任意稳定版本 | - |
| redhat-lsb-core | 任意稳定版本 | - |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Meta服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula
| `pid_file` | `pids/nebula-metad.pid` | 记录进程ID的文件。 |
| `timezone_name` | - | 指定Nebula Graph的时区。初始配置文件中未设置该参数,如需使用请手动添加。系统默认值为`UTC+00:00:00`。格式请参见[Specifying the Time Zone with TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html "Click to view the timezone-related content in the GNU C Library manual")。例如,东八区的设置方式为`--timezone_name=CST-8`。 |
| `local_config` | `true` | 是否从配置文件获取配置信息。 |
|`minimum_reserved_bytes`|-|每个数据存储路径的剩余空间最小值,低于该值时,可能会导致集群元数据操作失败。单位:字节。默认为`1073741824`,即1GB。|
cooper-lzy marked this conversation as resolved.
Show resolved Hide resolved

!!! Note

Expand All @@ -41,8 +42,8 @@ Meta服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula
| `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 |
|`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 |
|`stdout_log_file` |`metad-stdout.log` | 标准输出日志文件名称。 |
`stderr_log_file` |`metad-stderr.log` | 标准错误日志文件名称。 |
`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 |
|`stderr_log_file` |`metad-stderr.log` | 标准错误日志文件名称。 |
|`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 |

## networking配置

Expand All @@ -54,6 +55,7 @@ Meta服务提供了两份初始配置文件`nebula-metad.conf.default`和`nebula
| `ws_ip` | `0.0.0.0` | HTTP服务的IP地址。 |
| `ws_http_port` | `19559` | HTTP服务的端口。 |
| `ws_h2_port` | `19560` | HTTP2服务的端口。 |
|`ws_storage_http_port`|`19779`| HTTP协议监听Storage服务的端口,需要和Storage服务配置文件中的`ws_http_port`保持一致。|
|`heartbeat_interval_secs` | `10` | 默认心跳间隔。请确保所有服务的`heartbeat_interval_secs`取值相同,否则会导致系统无法正常工作。单位:秒。 |

!!! caution
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,15 @@ Graph服务提供了两份初始配置文件`nebula-graphd.conf.default`和`nebu
| `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 |
|`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 |
|`stdout_log_file` |`graphd-stdout.log` | 标准输出日志文件名称。 |
`stderr_log_file` |`graphd-stderr.log` | 标准错误日志文件名称。 |
`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 |
|`stderr_log_file` |`graphd-stderr.log` | 标准错误日志文件名称。 |
|`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 |

## query配置

| 名称 | 预设值 | 说明 |
| ------------------- | ------------------------ | ------------------------------------------ |
|`accept_partial_success` |`false` |是否将部分成功视为错误。此配置仅适用于只读请求,写请求总是将部分成功视为错误。|
|`session_reclaim_interval_secs`|`10`| 将Session信息发送给Meta服务的间隔。单位:秒。|

## networking配置

Expand All @@ -72,6 +73,7 @@ Graph服务提供了两份初始配置文件`nebula-graphd.conf.default`和`nebu
| `ws_h2_port` | `19670` | HTTP2服务的端口。 |
|`heartbeat_interval_secs` | `10` | 默认心跳间隔。请确保所有服务的`heartbeat_interval_secs`取值相同,否则会导致系统无法正常工作。单位:秒。 |
|`storage_client_timeout_ms`|-| Graph服务与Storage服务的RPC连接超时时间。初始配置文件中未设置该参数,使用需手动添加。默认值为`60000`毫秒。|
|`ws_meta_http_port`|`19559`|HTTP协议监听Meta服务的端口,需要和Meta服务配置文件中的`ws_http_port`保持一致。|

!!! caution

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ Storage服务提供了两份初始配置文件`nebula-storaged.conf.default`和`
| `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 |
|`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 |
|`stdout_log_file` |`storaged-stdout.log` | 标准输出日志文件名称。 |
`stderr_log_file` |`storaged-stderr.log` | 标准错误日志文件名称。 |
`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 |
|`stderr_log_file` |`storaged-stderr.log` | 标准错误日志文件名称。 |
|`stderrthreshold` | `2` | 要复制到标准错误中的最小日志级别(`minloglevel`)。 |

## networking配置

Expand Down Expand Up @@ -74,9 +74,10 @@ Storage服务提供了两份初始配置文件`nebula-storaged.conf.default`和`

## disk配置

| 名称 | 默认值 | 说明 |
| 名称 | 预设值 | 说明 |
| :--------------------------| :-------------- | :------------------------ |
|`data_path` | `data/storage` | 数据存储路径,多个路径用英文逗号(,)分隔。一个RocksDB实例对应一个路径。 |
|`minimum_reserved_bytes`|`268435456`|每个数据存储路径的剩余空间最小值,低于该值时,可能会导致集群元数据操作失败。单位:字节。默认为`1073741824`,即1GB。|
|`rocksdb_batch_size` | `4096` | 批量操作的缓存大小。单位:字节。 |
|`rocksdb_block_cache` | `4` | BlockBasedTable的默认块缓存大小。单位:兆(MB)。 |
|`engine_type` | `rocksdb` | 存储引擎类型。 |
Expand All @@ -97,7 +98,6 @@ Storage服务提供了两份初始配置文件`nebula-storaged.conf.default`和`
|`rocksdb_column_family_options` |`{"write_buffer_size":"67108864",`<br>`"max_write_buffer_number":"4",`<br>`"max_bytes_for_level_base":"268435456"}` |RocksDB column family选项。|
|`rocksdb_block_based_table_options` |`{"block_size":"8192"}` |RocksDB block based table选项。|


rocksdb options配置的格式为`{"<option_name>":"<option_value>"}`,多个选项用英文逗号(,)隔开。

`rocksdb_db_options`和`rocksdb_column_family_options`支持的选项如下:
Expand Down