Estoy utilizando, por ejemplo, c3p0 con algunos "maxStatements" definidos para el caché de estado preparado. ¿Qué hace realmente este almacenamiento en caché? Qué tipo de datos almacena en caché ¿En qué nivel (db, aplicación, ...)? Será bueno entenderlo por ejemplo. Por ejemplo, tengo una consultaAlmacenamiento en caché PreparedStatement: qué significa (cómo funciona)
select * from sometable where somecolumn =?
Ahora lo envío en una declaración preparada que no está en caché. Y ahora lo estoy enviando y está en caché. ¡Qué diferencia! Lo que sucedió en el primer caso y en el segundo. ¿Qué se envía al servidor de BD en el primer caso y en el segundo?
Gracias.
¿Hay alguna regla general? Mi aplicación se ejecuta secuencialmente alrededor de 100 sqls diferentes. Por lo tanto, supongo que con el conjunto de estados preparados, la proporción de aciertos igual a 50 será 0 (LRU?). – j23
lo más simple es usar 'maxStatementsPerConnection' y configurarlo con el número de declaraciones preparadas _frequently used_ por su aplicación. (esto es, omita las declaraciones que se usan en la inicialización de la aplicación, o que se usan mucho menos con fines administrativos, etc.) si su aplicación siempre ejecuta secuencialmente 100 distintas declaraciones preparadas, entonces, seguro, intente establecer 'maxStatementsPerConnection' en 100, pero existe un riesgo que la memoria y la huella de recursos de eso compensará cualquier beneficio y estarás mejor sin él. Tendrás que ver. –