更新动态设置

Neo4j 企业版支持在运行时更改某些配置设置,无需重新启动服务。

运行时对配置的更改不会持久化。为了避免在重新启动 Neo4j 时丢失更改,请确保也更新 neo4j.conf

在集群环境中,CALL dbms.setConfigValue 仅影响其运行所在的集群成员,并且不会传播到其他成员。如果要更改所有集群成员上的配置设置,则必须针对每个成员运行该过程并更新其 neo4j.conf 文件。

发现动态设置

使用 SHOW SETTINGS 发现哪些配置值可以动态更新,或查阅 配置设置参考

示例 1. 发现动态设置
SHOW SETTINGS
YIELD name, isDynamic
WHERE isDynamic
RETURN name
+----------------------------------------------------------------+
| name                                                           |
+----------------------------------------------------------------+
| "db.checkpoint.iops.limit"                                     |
| "db.format"                                                    |
| "db.lock.acquisition.timeout"                                  |
| "db.logs.query.annotation_data_as_json_enabled"                |
| "db.logs.query.annotation_data_format"                         |
| "db.logs.query.early_raw_logging_enabled"                      |
| "db.logs.query.enabled"                                        |
| "db.logs.query.max_parameter_length"                           |
| "db.logs.query.obfuscate_literals"                             |
| "db.logs.query.parameter_logging_enabled"                      |
| "db.logs.query.plan_description_enabled"                       |
| "db.logs.query.threshold"                                      |
| "db.logs.query.transaction.enabled"                            |
| "db.logs.query.transaction.threshold"                          |
| "db.memory.transaction.max"                                    |
| "db.memory.transaction.total.max"                              |
| "db.track_query_cpu_time"                                      |
| "db.transaction.bookmark_ready_timeout"                        |
| "db.transaction.concurrent.maximum"                            |
| "db.transaction.sampling.percentage"                           |
| "db.transaction.timeout"                                       |
| "db.transaction.tracing.level"                                 |
| "db.tx_log.preallocate"                                        |
| "db.tx_log.rotation.retention_policy"                          |
| "db.tx_log.rotation.size"                                      |
| "dbms.cluster.network.connect_timeout"                         |
| "dbms.cypher.render_plan_description"                          |
| "dbms.memory.transaction.total.max"                            |
| "dbms.routing.client_side.enforce_for_domains"                 |
| "dbms.routing.reads_on_writers_enabled"                        |
| "dbms.security.key.name"                                       |
| "dbms.security.keystore.password"                              |
| "dbms.security.keystore.path"                                  |
| "dbms.security.ldap.authentication.attribute"                  |
| "dbms.security.ldap.authentication.user_dn_template"           |
| "dbms.security.ldap.authorization.access_permitted_group"      |
| "dbms.security.ldap.authorization.group_membership_attributes" |
| "dbms.security.ldap.authorization.group_to_role_mapping"       |
| "dbms.security.ldap.authorization.nested_groups_enabled"       |
| "dbms.security.ldap.authorization.nested_groups_search_filter" |
| "dbms.security.ldap.authorization.user_search_base"            |
| "dbms.security.ldap.authorization.user_search_filter"          |
| "server.cluster.catchup.connect_randomly_to_server_group"      |
| "server.cluster.catchup.connect_randomly_to_server_tags"       |
| "server.databases.default_to_read_only"                        |
| "server.databases.read_only"                                   |
| "server.databases.writable"                                    |
| "server.memory.pagecache.flush.buffer.enabled"                 |
| "server.memory.pagecache.flush.buffer.size_in_pages"           |
| "server.memory.query_cache.per_db_cache_num_entries"           |
| "server.memory.query_cache.shared_cache_num_entries"           |
+----------------------------------------------------------------+

51 rows

更新动态设置

一个 管理员 能够在运行时更改某些配置设置,无需重新启动服务。

语法

CALL dbms.setConfigValue(设置, )

返回值

成功时不返回任何内容。

异常

未知或无效的设置名称。

该设置不是动态的,无法在运行时更改。

无效的设置值。

以下示例显示了如何动态启用查询日志记录。

示例 2. 设置配置值
CALL dbms.setConfigValue('db.logs.query.enabled', 'info')

如果传递了无效值,则该过程将显示一条相应的消息。

示例 3. 尝试设置无效配置值

CALL dbms.setConfigValue('db.logs.query.enabled', 'yes')
Failed to invoke procedure `dbms.setConfigValue`: Caused by: org.neo4j.graphdb.config.InvalidSettingException: Bad value 'yes' for setting 'db.logs.query.enabled': 'yes' not one of [OFF, INFO, VERBOSE]

要将配置值重置为其默认值,请将空字符串作为value参数传递。

示例 4. 将配置值重置为默认值
CALL dbms.setConfigValue('db.logs.query.enabled', '')