我在嵌入式 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
此设置是针对每个数据库的,因此如果您有多个数据库(不是针对同一数据库的多个用户),您应该正确分配它。
关于java - OrientDB性能测试禁用缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25176929/