NEO4J数据插入测试

CPU: I3 2.4Ghz 4核,内存8G

  • 方式一:采用其原生接口操作

JVM:-Xms1024m -Xmx1024m -Xmn512m-XX:PermSize=128m -XX:MaxPermSize=256m

4000节点(50个属性),4000关系:1秒,其间cpu使用率25%,761M

8000节点(50个属性),8000关系:2秒,其间cpu使用率25%,829M

16000节点(50个属性),16000关系:5秒,其间cpu使用率25,983M

24000节点(50个属性),24000关系:9秒,其间cpu使用率25%,1079M

32000节点(50个属性),32000关系:14秒,其间cpu使用率25%,1187M

40000节点(50个属性),40000关系:执行1多分钟以后直接报outOfMemery:
java heap space

内存使用:

结论:插入时用事务插入接口的话,在JVM 1G内存的配置下最后能够插入3万多个节点和关系,再多就内存溢出。

  • 方式二:采用BatchInserter接口

JVM:采用JVM默认设置

40000节点(50个属性),40000关系:6秒,其间CPU使用率25%,内存288M

80000节点(50个属性),80000关系:17秒,其间CPU使用率25%,内存288M

120000节点(50个属性),120000关系:31秒,其间CPU使用率25%,内存289M

200000节点(50个属性),200000关系:56秒,其间CPU使用率25%,内存288M

分析:

根据官方文档,当少量数据(根据测试观察5000条以下)插入时,建议使用事务型插入接口(即通常NEO4J的数据操作接口),速度还是可以的;当数据量比较大时,建议采用专用的BatchInserters接口,这个接口在插入时不创建事务,估计内存占用很少,基本上在不同数据量的操作期间内存无太大变化。由此可见,在向NEO4J导入大量数据时,可以有以下两种方法实现快速插入:

  1. 化大为小法

此法是将大量的数据集合分成5000条或者更少集合,使用事务型插入接口插入数据,这样整体的插入时间按照以上的测试结果,100000条数据可以在30秒内插入完毕。缺点是需要分拆数据集合为小的集合;优点是当用户已经在运行一组NEO4J的数据库时,只需改造相关的代码即可,也不需要在导入期间暂停数据库。

  1. 批量插入法

此法不管数据量多大,都可以实现快速插入,实现速度和内存的平衡,适合在初始化数据库时(或者需要大量导入数据时)一次性导入大量的数据;缺点是导入数据时要暂停数据库,采用BatchInserters接口导入,不能实现业务无中断运行。

建议:

采用化大为小法,当插入(导入)数据量大于1000个时,采用分批插入的方法,可以达到快速插入数据的目的,也能保证内存占用量不会有太大的变化而导致OOM。



NEO4J数据插入测试,布布扣,bubuko.com

时间: 2024-11-10 14:47:54

NEO4J数据插入测试的相关文章

SqlBulkCopy类进行大数据(10000万条以上)插入测试

好多天没写博客了,刚刚毕业一个多月,在IT的路上真是迷茫啊! 关于上一篇博客中提到的,在进行批量数据插入数据库的时候可以通过给存储过程传递一个类型为Table的参数进行相关操作,在这个过程中本人没有进行效率的测试.后来查找发现可以通过SqlBulkCopy类进行大数据插入操作,本文就来介绍一个这个类的作用并做了相关的效率测试(与Insert语句进行对比). SqlBulkCopy只能向SqlServer表写入数据,该表既可以是同一个服务器上的也可以是远程服务器上的.当然要写入的数据即数据源不单单

SQL 数据插入、删除 大数据

--测试表 CREATE TABLE [dbo].[Employee] ( [EmployeeNo] INT PRIMARY KEY, [EmployeeName] [nvarchar](50) NULL, [CreateUser] [nvarchar](50) NULL, [CreateDatetime] [datetime] NULL );--1.循环插入 SET STATISTICS TIME ON; DECLARE @Index INT = 1; DECLARE @Timer DATET

聚簇索引对数据插入的影响

聚簇索引对数据插入的影响 背景 开发人员反馈系统执行某存储过程特别慢,经排查是由于存储过程执行过程中需要向新建的任务表插入大量数据,该任务表的主键是聚簇索引造成的.聚簇索引为什么会导致插入慢呢?聚簇索引会对数据插入造成多大影响呢? 原理 在非聚簇索引中,物理数据的存储顺序与索引不同,索引的最低级别包含指向数据页上的行的指针. 在聚簇索引中,物理数据的存储顺序与索引相同,索引的最低级别包含实际的数据页.聚簇索引导致数据记录必须按照键大小顺序存储,插入和删除须进行移动数据记录,导致额外的磁盘IO.

算法10---二叉搜索树存在重复数据插入的实现

算法10---二叉搜索树存在重复数据插入的实现 当用TREE-INSERT将n个具有相同关键字的数据项插入到一棵初始为空的二叉查找树中时,该算法的渐近性能如何? 我们可以对TREE-INSERT做一些改进,即在第5行的前面测试key[z] = key[x],在第11行的前面测试key[z] = key[y].如果等式成立,我们对下列策略中的某一种加以实现.对每一种策略,请给出将n个具有相同关键字的数据插入一棵初始为空的二叉查找树中的渐近性能(以下的策略是针对第5行的,比较的是z和x的关键字.将x

SQL数据插入

T-SQL中提供了多个将数据插入到表中的语句:insert values.insert select.insert exec.select into和Bulk insert: 1.  insert values 这是一种比较常用的插入数据方式,可以进行单条或者多条数据插入 首先创建一个表,然后进行数据插入操作 create table test( id int not null identity(1,1) primary key, name nvarchar(100) ) 单条数据插入 inse

[转载]提升SQLite数据插入效率低、速度慢的方法

转载地址:http://blog.csdn.net/majiakun1/article/details/46607163,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候,也将SQLite引入进来,以提高数据的结构化程度,并且提高大数据的处理能力(SQLite最高支持2PB大小的数据).但是最开始,我发

SharePoint 2013 列表关于大数据的测试<二>

1.给测试列表添加查阅项字段,100个,代码如下: 2.插入测试数据的方法,注意查阅项字段的格式,代码如下: 3.插入10w条数据,时间花费如下(不建议List[LISTNAME].Items.Add,会比较慢): 4.查看列表设置,数据有10w条,阙值设置500w,如下图: 5.进入AllItems页面,发现查阅项字段数大于限制(8个),如下图: 6.修改查阅项限制数目(修改为500),如下图: 7.数据量10w,查阅项字段100个时的测试数据,如下表格: 表一:分页30,LookUp字段50

数据库批量数据插入问题分析

在数据库的相关开发中,经常会遇到数据的批量插入问题.本文主要是通过实验的方式探讨批量数据插入的瓶颈,以及优化建议. 以10w条记录的插入作为实验对象,采用下面的几种方法插入: 1.       普通插入:普通的一条条插入 2.       普通插入+手动提交:setAutoCommit(false).commit() 3.       普通插入+手动提交+ prepareStatement方式 4.       批量插入:addBatch.executeBatch 5.       批量插入:i

.NET批量大数据插入性能分析及比较

原文:.NET批量大数据插入性能分析及比较 数据插入使用了以下几种方式 1. 逐条数据插入2. 拼接sql语句批量插入3. 拼接sql语句并使用Transaction4. 拼接sql语句并使用SqlTransaction5. 使用DataAdapter6. 使用TransactionScope及SqlBulkCopy7. 使用表值参数 数据库使用SQL Server,脚本如下 create table TestTable(Id int ,Name nvarchar(20)) 程序中生成测试Dat