我已经在嵌入式Orientdb数据库v1.7.7上进行了一些性能测试。
同一查询执行多次。第一次查询执行需要花费一些时间,但随后的执行要快得多。
我猜OrientDB正在缓存很多东西。所以我想禁用缓存。
orientdb caching上的文档说:
OGlobalConfiguration.CACHE_LOCAL_ENABLED.setValue(false);
由于此配置属性不存在,我不得不修改此代码,所以我写道:
OGlobalConfiguration.CACHE_LEVEL1_ENABLED.setValue(false);
OGlobalConfiguration.CACHE_LEVEL2_ENABLED.setValue(false);
但是即使使用这种配置,我的问题仍然存在。第一次查询执行需要花费一些时间,但随后的执行要快得多。
最佳答案
这是因为有DiskCache。将其视为操作系统的内存映射的替代。它处理从RAM到磁盘的页面加载/保存:
https://github.com/orientechnologies/orientdb/wiki/plocal-storage-disk-cache
您可以通过将全局配置“ DISK_CACHE_SIZE”设置为要分配的大小(MB)来更改它。在使用OrientDB之前,请执行以下操作:
OGlobalConfiguration.DISK_CACHE_SIZE.setValue( 1000 ); // 1GB
此设置是针对每个数据库的,因此,如果您有多个数据库(同一个数据库没有多个用户),则应正确分配它。