私は、prepareStatementキャッシングのためにいくつかの定義済みの "maxStatements"を使ってc3p0を使用しています。 このキャッシングは実際に何をしていますか?どのような種類のデータをキャッシュするか。どのレベル(db、アプリケーション、..)ですか? 例から理解するといいですね。たとえば、私はクエリを持っていますPreparedStatementキャッシング - それはどういう意味ですか(どのように動作するのですか)
select * from sometable where somecolumn =?
私はキャッシュされていない準備文で送信します。 そして、私はそれを送信し、それはキャッシュされます。 違いは?最初のケースと2番目のケースで何が起こったのですか?最初のケースと2番目のケースでDBサーバーに送信されるものは何ですか?
ありがとうございました。
経験則はありますか?私のアプリは順番に約100の異なるsqlsを実行するので、PreparedStatementプールでは50のヒット率が0(LRU?)になると思います。 – j23
最も簡単なことは、 'maxStatementsPerConnection'を使用して、アプリケーションによって頻繁に使用されるPreparedStatementの数に設定することです。 (つまり、アプリケーションの初期化時に使用されるステートメントを無視するか、または管理目的にはそれほど頻繁に使用されないステートメントなど)、アプリケーションが常に100個の別個のPreparedStatementを実行する場合は、必ず 'maxStatementsPerConnection'を100に設定してみてくださいそのメモリとリソースのフットプリントがどんな利点よりも重要であり、あなたがなくてはるかに良いことになるでしょう。あなたは見なければならないでしょう。 –