Я использую org.springframework.data.cassandra.core.cql.support.PreparedStatementCache для кэширования подготовленного состояния.
Но это занимает много памяти.
Похоже, если я все еще использую PreparedStatement, кэш никогда не очищается и увеличивается (несмотря на то, что мы используем тот же самый запрос cql !!!).
Если я перестану звонить ему, память уменьшится.
Мое приложение использует springboot / cassandra dse
Мы оба тестируем в tomcat (Windows и Linux-сервер, более 500 запросов / с).
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
<exclusions>
<exclusion>
<groupId>com.datastax.dse</groupId>
<artifactId>dse-java-driver-core</artifactId>
</exclusion>
</exclusions>
</dependency>
private final PreparedStatementCache cache = PreparedStatementCache.create();
public Channel findByIdChannel(String idChannel) {
List<Channel> listChannel = cassandraTemplate
.getCqlOperations()
.query(
findByIdChannelQuery(idChannel),
(row, rowNum) -> cassandraTemplate.getConverter().read(Channel.class, row));
if (listChannel.isEmpty()) {
return null;
}
return listChannel.get(0);
}
private BoundStatement findByIdChannelQuery(String idChannel) {
String cql = "select * from channel where idchannel = '" + idChannel + "'";
return CachedPreparedStatementCreator.of(
cache, cql).createPreparedStatement(session)
.bind();
}
Любая рекомендация по повышению производительности (не о создании кеша приложений и уровне метода)?
Как мы можем исправить размер подготовленного StateCache?
Большое спасибо.