配置资源限制¶
在 GQL 查询开头添加SET_VAR提示,可为当前查询设置内存上限和执行并行度等配置。提示使用/*+ ... */语法,仅对当前查询生效,后续查询仍沿用会话中的配置。
常用配置项如下:
| 配置项 | 作用 |
|---|---|
memory_limit_bytes |
查询执行的内存上限,单位为字节。 |
query_concurrency |
单条查询执行的最大线程数。 |
procedure_minloglevel |
当前查询中 GQL 过程的最小日志级别。 |
悦数图数据库开发版的 1 GB 数据量上限限制实例可存储的数据量。memory_limit_bytes限制查询执行时使用的内存,调整它不会改变数据量上限。产品限制见功能与限制。
示例¶
以下内存和并行度示例使用电影示例数据集中的movie图。尚未加载数据时,先按加载示例数据操作。
在悦数图管理的控制台中逐条执行以下语句。使用ngql输入多行语句时,首尾各用一行'''包围语句,见多行输入方式。
下文的query_concurrency=2和memory_limit_bytes=134217728是演示值,不作为推荐配置。实际使用时,可先沿用默认配置,再根据查询需求和可用的 CPU、内存调整。
配置内存限制¶
将当前查询的内存上限设为 128 MiB,即134217728字节(128 × 1024 × 1024 字节):
/*+ SET_VAR(memory_limit_bytes=134217728) */
USE movie
MATCH (person:Person)
RETURN person
LIMIT 100
超过内存上限时,查询会失败并返回内存超限错误。LIMIT 100只限制返回行数,不能据此确定查询所需的内存上限。
配置查询并行度¶
将当前查询执行的最大线程数设为2:
/*+ SET_VAR(query_concurrency=2) */
USE movie
MATCH (person:Person)
RETURN person
LIMIT 100
实际使用的线程数取决于执行计划和可用的 CPU 资源。未指定该提示时,沿用会话中的配置;该配置项的系统默认值为1。
配置多个限制¶
同时将当前查询的最大线程数设为2,内存上限设为 128 MiB:
/*+ SET_VAR(query_concurrency=2) SET_VAR(memory_limit_bytes=134217728) */
USE movie
MATCH (person:Person)
RETURN person
LIMIT 100
配置最小日志级别¶
以下示例使用临时图#movie_temporary_graph,需先按 CREATE TEMPORARY GRAPH 创建该图。
/*+ SET_VAR(procedure_minloglevel="DEBUG") */ USE #movie_temporary_graph {
LOG_DEBUG("This is a debug log")
LOG_INFO("This is an info log")
LOG_WARN("This is a warning log")
LOG_ERROR("This is an error log")
}
该提示将当前查询中过程日志的最小级别设为DEBUG,可输出DEBUG及更高级别的日志。