查询缓存

开箱即用,查询缓存集是按数据库(per database)划分的。这意味着每个新数据库都会初始化一组新的缓存。

每个缓存的最大条目数通过 server.memory.query_cache.per_db_cache_num_entries 进行配置。仅当 server.memory.query_cache.sharing_enabled 设置为 false 时,它才决定缓存大小。

查询缓存可能会消耗大量内存,尤其是在运行许多活动数据库时。为了解决这个问题并提高内存消耗的可预测性,您可以将 DBMS 配置为所有数据库仅使用一组缓存。有关更多信息,请参阅 统一查询缓存

配置缓存

以下是查询缓存配置的摘要。有关更多信息,请参阅 操作手册 → 配置设置

查询缓存配置
设置 描述 默认

server.memory.query_cache.sharing_enabled

仅限企业版 启用不同数据库之间的缓存空间共享。开启此选项后,数据库将共享缓存空间,但不会共享缓存条目。

false

server.memory.query_cache.shared_cache_num_entries

仅限企业版 所有数据库的缓存查询数量。仅当 server.memory.query_cache.sharing_enabled 设置为 true 时,此设置才决定缓存大小。

1000

server.memory.query_cache.per_db_cache_num_entries

每个数据库的缓存查询数量。仅当 server.memory.query_cache.sharing_enabled 设置为 false 时,此设置才决定缓存大小。

1000

查询大小限制

考虑纳入查询缓存的默认查询大小限制为 128 KiB 的查询文本。

此限制旨在防止生成的庞大查询文本字符串在查询缓存中占用过多内存。此类查询字符串通常包含内联数据,在应用 字面量自动参数化 之前,不太可能被重用。

为了规避 128 KiB 的默认限制,您可以在查询前添加 CYPHER cache=force 以强制缓存,或者添加 CYPHER cache=skip 以从不缓存并跳过查询缓存查找。

最佳实践是避免在查询文本字符串中传递数据,而应改用参数。

© . This site is unofficial and not affiliated with Neo4j, Inc.