Ruhezustand und EHCache: Wie funktioniert maxElementsInMemory?
Ich habe EHCache mit einem defaultCache (für Elemente), einem StandardQueryCache (für Abfragen) und UpdateTimestampsCache (für das, was ich glaube, um Datenbankaktualisierungen zu verfolgen ... aber ich verstehe nicht wirklich, was es genau tut) konfiguriert.
Ich habe die maxElementsInMemory für jeden dieser Caches festgelegt, aber was ich nicht bekomme, ist, was diese Nummer für den StandardQueryCache und für den UpdateTimestampsCache steuert. Ich habe festgestellt, dass die Anzahl der Entitäten, die im Standardcache zwischengespeichert werden können, 10000 nicht überschreiten darf, der Abfragecache jedoch keine Elemente zwischenspeichert. Es speichert Primärschlüssel zwischen (soweit ich das verstehe).
Bedeutet dies dann, dass das maxElementsInMemory für den StandardQueryCache die Anzahl der "Zeilen" aus den Ergebnissen steuert, oder steuert es die Anzahl der Primärschlüsselpaare für Elemente, die es möglicherweise hat?
Was ist mit dem UpdateTimestampsCache? Verfolgt es, wann eine Entität das letzte Mal aktualisiert wurde, wann eine Tabelle das letzte Mal aktualisiert wurde ... oder etwas anderes? Welche Nummer soll ich für maxElementsInMemory für dieses verwenden?
Vielen Dank!
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true">
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600">
</defaultCache>
<cache
name="org.hibernate.cache.internal.StandardQueryCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600">
</cache>
<cache
name="org.hibernate.cache.spi.UpdateTimestampsCache"
maxElementsInMemory="10000"
eternal="true">
</cache>
</ehcache>