JanusGraph之Cache

  1. Caching(缓存)
    JanusGraph employs multiple layers of data caching to facilitate fast graph traversals.(JanusGraph采用多层数据缓存,以方便快速图形遍历),缓存层按照从JanusGraph事务中访问的顺序列出。缓存越接近事务,缓存访问越快,内存占用和维护开销也越高
  2. Transaction-Level Caching(事务级缓存)
    2.1. Vertex Cache(顶点缓存):缓存访问的顶点和它们的邻接列表(或子集)
    2.2. Index Cache(索引缓存):缓存索引查询的结果,以便随后的索引调用可以从内存中提供,而不是调用索引后端和(通常)等待一个或多个网络往返。
    事务缓存大小可以通过cache.tx-cache-size或基于每个事务来配置graph.buildTransaction(),setVertexCacheSize(int)方法是通过事务生成器打开事务 并使用该方法。
  3. Database Level Caching(数据库级缓存)
    3.1. Cache Expiration Time
    性能和查询行为最重要的设置是通过配置的缓存过期时间cache.db-cache-time。缓存将保存最多几毫秒的图形元素。如果元素过期,则将在下次访问时从存储后端重新读取数据。
    如果只有一个JanusGraph实例访问存储后端,或者如果此实例是修改图形的唯一实例,则可以将缓存过期设置为0,从而禁用缓存过期。
    如果有多个JanusGraph实例访问存储后端,则应将时间设置为另一个 JanusGraph实例修改图形和此JanusGraph实例查看数据之间允许的最大时间。
    3.2. Cache Size
    配置选项cache.db-cache-size控制允许JanusGraph的数据库级缓存占用多少堆空间。缓存越大,效果就越好。但是,较大的缓存大小可能会导致GC过多和性能较差。
    高速缓存大小是指由高速缓存专门占用的堆空间量。
    3.3. Clean Up Wait Time
    当顶点被本地修改(例如添加边)时,所有顶点的相关数据库级高速缓存条目被标记为过期并最终被逐出。这将导致JanusGraph在下次访问时刷新存储后端的顶点数据并重新填充缓存。通过配置cache.db-cache-clean-wait,高速缓存将至少等待几毫秒,然后使用从存储后端检索到的条目重新填充高速缓存。
    如果JanusGraph在本地运行或对存储后端运行,以保证修改立即可见,则可以将此值设置为0
  4. Storage Backend Caching(存储后端缓存)
    每个存储后端都维护着自己的数据缓存层。这些缓存通过压缩,数据紧凑,协调到期,并经常维护堆,可以使用大型缓存而不会陷入垃圾收集问题。但访问速度也较慢。
    缓存的确切类型及其属性取决于特定的存储后端。

猜你喜欢

转载自blog.csdn.net/qq_32662595/article/details/78656443