neo4j 内存介绍

2023-11-07

描述Neo4j内存配置和使用的不同方面

内容翻译neo4j 操作手册

1. 总览

在这里插入图片描述

1.1 操作系统内存

必须保留一些内存以运行操作系统本身的进程。不可能显式配置应为操作系统保留的RAM数量,因为这是在配置页面缓存和堆空间之后仍保持可用的RAM。但是,如果我们没有为操作系统留出足够的空间,它将开始交换到磁盘,这将严重影响性能。

1GB是专用于运行Neo4j的服务器的良好起点。但是,在某些情况下,为OS保留的容量会大大超过1GB,例如具有极大RAM的服务器。

1.2 Lucene索引缓存

Neo4j使用Apache Lucene为其某些索引功能。通过确保将尽可能多的索引缓存到内存中来优化索引查找性能。与OS内存类似,无法显式配置Lucene索引缓存。相反,我们估计了所需的内存,并确保在分配了页面缓存和堆缓存之后,还有足够的空间用于Lucene索引。

1.3 页面缓存

页面缓存用于缓存Neo4j数据和本机索引。将图形数据和索引缓存到内存中将有助于避免昂贵的磁盘访问并获得最佳性能。

用于指定Neo4j允许用于页面缓存的内存量的参数为:dbms.memory.pagecache.size

1.4 堆大小

堆空间用于查询执行,事务状态,图形管理等。堆所需的大小非常取决于Neo4j用法的性质。例如,长时间运行的查询或非常复杂的查询可能需要比简单查询更大的堆。

一般来说,为了提高性能,我们要配置足够大的堆以支持并发操作。

在性能问题的情况下,我们可能必须调整查询并监视其内存使用情况,以确定是否需要增加堆。

堆内存大小由参数dbms.memory.heap.initial_size和决定dbms.memory.heap.max_size。建议将这两个参数设置为相同的值。这将有助于避免不必要的完整垃圾收集暂停

1.5 交易状态

事务状态是保存更新数据库中记录的事务中的数据和中间结果所需的内存。仅读取数据的查询不需要事务状态内存分配。默认情况下,事务状态是从堆或on-heap分配的。请注意,在堆内部配置事务状态时,不能指定其最大大小。

事务状态也可以被配置为被从堆中单独分配,或关断堆,通过使用参数dbms.tx_state.memory_allocation。当事务状态分配为堆外时,可以使用参数定义事务状态的最大大小 dbms.tx_state.max_off_heap_memory。请注意,事务状态内存未预先分配;它会根据数据库中活动的需要而增长和收缩。保持事务状态处于堆外状态对于以大型,写密集型事务为特征的应用程序特别有利。

2. 注意事项

2.1 始终使用显式配置

为了更好地控制系统的行为,建议始终在neo4j.conf中显式定义页面缓存和堆大小参数。如果未明确定义这些参数,则将在启动时根据可用的系统资源来计算一些启发式值。

2.2 初始记忆建议

使用该neo4j-admin memrec命令可获得有关如何分配一定数量的内存的初步建议。可能需要调整值以适应每个特定的用例。

2.3 检查数据库的内存设置

使用neo4j-admin memrec检查数据库的内存设置

我们希望估计数据库文件的总大小。

$neo4j-home> bin/neo4j-admin memrec --database=graph.db
...
...
...
# Lucene indexes: 6690m
# Data volume and native indexes: 17050m

我们可以看到,Lucene索引占用了大约6.7GB的数据,而数据量和本机索引相加则占用了大约17GB的数据。

使用此信息,我们可以对内存配置进行完整性检查:

  • 将数据量和本机索引的值与的值进行比较dbms.memory.pagecache.size
  • 比较Lucene索引的值与分配dbms.memory.pagecache.size和后剩余的内存量dbms.memory.heap.initial_size

请注意,即使我们努力争取尽可能多地缓存数据和索引,但在某些生产系统中,对内存的访问受到限制,并且必须在不同区域之间进行协商。然后将进行一定数量的测试和调整,以找出可用内存的最佳划分。

2.4 索引提供程序对内存使用量的影响

在从Neo4j的早期版本升级之后,重建某些索引以利用新的索引功能是有利的。有关详细信息,请参见第11.2节“索引配置”。索引的重建将改变内存利用率的分布。在具有许多索引的数据库中,可能已为Lucene保留了大量内存。重建后,可能有必要将某些内存分配给页面缓存。用于neo4j-admin memrec --database在重建索引之前和之后检查数据库。

3. 容量规划

在许多使用情况下,尝试缓存尽可能多的数据和索引是有利的。以下示例说明了根据我们是否已经在生产中运行或计划将来的部署来估计页面缓存大小的方法:

示例11.2 估计现有Neo4j数据库的页面缓存

首先估算数据和索引的总大小,然后乘以某个因素(例如20%)以允许增长。

$neo4j-home> bin/neo4j-admin memrec --database=graph.db
...
...
...
# Lucene indexes: 6690m
# Data volume and native indexes: 35050m

我们可以看到,数据量和本机索引总共占用了约35GB。在我们的特定用例中,我们估计20%将提供足够的增长空间。

dbms.memory.pagecache.size = 1.2 *(35GB)= 42GB

我们通过将以下内容添加到neo4j.conf来配置页面缓存:

dbms.memory.pagecache.size=42GB

示例11.3 估计新Neo4j数据库的页面缓存

在计划将来的数据库时,使用一部分数据进行导入非常有用,然后将结果存储大小乘以该部分再加上一定百分比的增长量。例如,导入数据的1/100,并测量其数据量和本机索引。然后将该数字乘以120即可确定结果的大小,并允许20%的增长。

假设我们已经将1/100的数据导入到测试数据库中。

$neo4j-home> bin/neo4j-admin memrec --database=graph.db
...
...
...
# Lucene indexes: 425.0
# Data volume and native indexes: 251100k

我们可以看到,数据量和本机索引合起来大约占用250MB。我们估算结果,并预留20%的增长空间:

dbms.memory.pagecache.size = 120 *(250MB)= 30GB

我们通过将以下内容添加到neo4j.conf来配置页面缓存:

dbms.memory.pagecache.size=30G
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

neo4j 内存介绍 的相关文章

随机推荐

  • Redis配置与优化

    文章目录 Redis配置 优化 1 关系型数据库与非关系型数据库 1 1 定义 1 2 区别 1 3 产生背景 2 Redis 2 1 Redis简介 2 2 Redis优点 2 3 Redis缺点 2 4 Redis使用场景 2 5 Re
  • MQTT.fx连接阿里云

    第一步 查看阿里云设备 MQTT 参数 点击 设备 点击 设备信息 点击mqtt连接参数 查看 第2步 打开 MQTT fx 软件 点击 齿轮 点击 新建项目 输入项目名称 MQTT test 01 复制mqtt连接参数 clientId
  • GDAL库简介以及在Windows下编译过程

    GDAL Geospatial Data Abstraction Library 地理空间数据抽象库 是一个在X MIT许可协议下的开源栅格空间数据转换库 官网http www gdal org index html 也可参考GitHub
  • Could not connect to ‘192.168.203.128‘ (port 22): Connection failed.

    问题展示 请在保证虚拟机和宿主机之间完美连接之后 再看此篇文章 如何保证呢 操作请看这篇 Linux虚拟机与Windows宿主机间的通信 如何验证呢 当然是 ping 啊 虚拟机 ping 主机 通 主机 ping 虚拟机 通 通常情况下
  • obj文件

    obj 文件是一种常用的 3D 模型文件格式 它由许多顶点坐标 法向量和纹理坐标组成 可以用来描述复杂的三维模型 obj 文件是一种文本文件 可以使用纯文本编辑器打开 也可以使用专门的 3D 模型软件来打开 编辑和渲染 obj 文件通常与
  • 1800亿参数,世界顶级开源大模型Falcon官宣!碾压LLaMA 2,性能直逼GPT-4

    来源 新智元 导读 一经发布 地表最强开源模型Falcon 180B直接霸榜HF 3 5万亿token训练 性能直接碾压Llama 2 一夜之间 世界最强开源大模型Falcon 180B引爆全网 1800亿参数 Falcon在3 5万亿to
  • 电路中的输入与输出电阻计算

    电路的输入与输出电阻计算 前言 一 输入电阻 1 一端口网络的概念 一端口网络的特性 输入电阻的计算方法 前言 本人是大二电子系的一个学生 大二上在学习模电 当学习到各种BJT电路 FET电路 差分放大电路或负反馈放大电路时 新学习的增益计
  • 生信学习——生信人的20个R语言习题(上)(附详细答案解读)

    题目目录 1 安装一些R包 2 了解ExpressionSet对象 比如CLL包里面就有data sCLLex 找到它包含的元素 提取其表达矩阵 使用exprs函数 查看其大小 3 了解 str head help函数 作用于第二步提取到的
  • 第 14 篇 : 安装Docker

    1 安装 任选其一 从160 165依次安装 批量安装 1 1 按照官方文档安装 Install on CentOS 1 2 通过阿里云镜像安装 推荐 sudo yum remove docker docker client docker
  • 陶氏公司将出席2023第二届中国汽车碳中和峰会

    2023第二届中国汽车碳中和峰会将于10月19日 20日在上海举办 本次峰会将为行业领导者 政策制定者和专家提供一个平台 讨论汽车行业减少碳排放的策略 专家们将从政策 供应链 ESG 替代能源解决方案 汽车材料创新 法律等不同领域分享碳中和
  • 01.个人项目难点汇总2 css定制科技感缺角边框

    01 CSS3实现缺角矩形 折角矩形以及缺角边框 前言 前几天偶然看到缺角矩形这个功能 脑袋中第一想法是 搞个绝对定位的伪元素 哪里需要挡哪里 或者找UI小哥聊聊天 忽然灵光一闪 想起之前翻过的 CSS揭秘 一书 记得有这个篇章 遂有了此文
  • react入门+UMI

    React 一 创建项目 安装基本第三方库以及配置所需目录 sudo npm i g create react app npm下安装react环境 create react app react demo 创建一个项目名为react demo
  • 从Gles、Vulkan到Metal(一)-- 数据和提交

    无论以任何形式本篇文章内容 请注明来自leonnwei的csdn blog 引言 一直想整理下关于移动端图形编程API的文档 图形API为何重要 如果说图形编程的内功是计算机图形学的诸原理和算法 那么外功就是实实在在的硬件API 不能精通A
  • Apache License 2.0

    Apache License 2 0 是 Apache 软件基金会发布的开源软件许可证 它是一种宽松的 允许商用的许可证 适用于开源项目和商业项目 Apache 2 0 许可证是一个相对较新的版本 于2004年发布 取代了早期的 Apach
  • 决策树——信息熵,条件熵,信息增益

    1 信息熵 信息熵是度量样本集的纯合度的一种常用的指标 熵值越大 随机变量的不确定性越高 比如 0 0 01 1 1 1 1 2 3 4 5 6 7 在这两组数据中 上面的数据的不确定性要小 只有两种可能性 抽中的数字2的概率为1 2 所以
  • overleaf写论文笔记(latex)

    overleaf官网 www overleaf com overleaf中文版 cn overleaf com 目录 从零开始 获取模板 文章标题修改 作者修改 摘要 页脚文字重叠 遮挡 三线表绘制 表格内单元格合并 不同行列数不同 文字加
  • 黑盒、白盒、灰盒,如何选择合适的模糊测试工具?

    在软件开发和安全领域 模糊测试是一种常用技术 用于发现应用程序或系统中的潜在漏洞和安全弱点 选择不同的模糊测试方法将极大地影响测试的有效性和效率 本文将比较对比黑盒 白盒和灰盒模糊测试的特点和优势并提供选型指导 模糊测试的分类 黑盒模糊测试
  • JDBC学习笔记一之JDBC的下载、引用、标准api介绍

    1 下载MySQL的JDBC驱动jar包 进入MySQL官网 https www mysql com 然后按图操作 2 下载Oracle的JDBC驱动jar包 按图提示操作 2 1引用Oracle的JDBC驱动jar包 2 2 Oracle
  • 软件测试工程师工作有多累?怎么入门学习软件测试呢?

    软件测试随着时间的发展 越来越受欢迎了 那么 你了解过软件测试吗 软件测试工程师工作累吗 跟随千锋一起来了解一下吧 1 其实IT行业都需要经常加班的 所以软件测试和软件开发其实都一样 当然了 一般来说开发会更累一点 2 目前国内软件测试的待
  • neo4j 内存介绍

    描述Neo4j内存配置和使用的不同方面 内容翻译neo4j 操作手册 1 总览 1 1 操作系统内存 必须保留一些内存以运行操作系统本身的进程 不可能显式配置应为操作系统保留的RAM数量 因为这是在配置页面缓存和堆空间之后仍保持可用的RAM