spring-data-cassandra导致性能下降

时间:2018-07-27 11:20:33

标签: spring-data-cassandra

我们已经从节俭迁移到了cql,并使用了spring-data-cassandra。

更改后的负载测试性能结果太差,特别是对于大约3万行的时间序列读取。

如果我们缺少导致此问题的内容,有人可以提供指导。

我们能够以30至40倍的速度达到预期的结果。如果我们使用spring-data-cassandra但不进行实体映射。我们观察到线程在为每一行进行实体映射时被阻塞。 Spring-data进行类加载器以为每个结果行加载实体类。

我们所做的更改不是将实体列表指定为返回选择查询,而是将其指定为对象列表。

慢速代码

 @Query("select * from \"InstrumentTimeSeries\" where key = ?0 and column1 >= ?1 and column1 <= ?2")
List<InstrumentTimeSeriesEntity> findByKeyAndRangeColumn1(ByteBuffer key, long columnValue1, long columnValue2);

 instrumentTimeSeriesRepository.findByKeyAndRangeColumn1(SRL_KEY.toByteBuffer(key), interval.getStartMillis(), interval.getEndMillis()).forEach(entity -> builder.addTick(entity.getColumn1(), SRL_DBL.fromByteBuffer(entity.getValue())));

快速代码

@Query("select * from \"InstrumentTimeSeries\" where key = ?0 and column1 >= ?1 and column1 <= ?2")
List<Object> findByKeyAndRangeColumn1(ByteBuffer key, long columnValue1, long columnValue2); }

instrumentTimeSeriesRepository.findByKeyAndRangeColumn1(SRL_KEY.toByteBuffer(key), interval.getStartMillis(), interval.getEndMillis()).forEach(row -> builder.addTick(((Row)row).getLong(1), SRL_DBL.fromByteBuffer(((Row)row).getBytes(2))));

0 个答案:

没有答案