저는 preparedStatement 캐싱에 대해 일부 "maxStatements"가 정의 된 c3p0을 사용하고 있습니다. 이 캐싱은 실제로 무엇을합니까? 어떤 종류의 데이터를 캐시합니다. 어떤 레벨에서 (db, application, ..)? 예를 들어 이해하면 좋을 것입니다. 예를 들어 나는 쿼리가있다.PreparedStatement 캐싱 - 무슨 뜻입니까 (작동 방식)
select * from sometable where somecolumn =?
이제 캐시되지 않은 준비된 명령문으로 보냅니다. 그리고 지금 나는 그것을 보내고 그것은 캐시됩니다. 차이점은 무엇입니까? 첫 번째 경우와 두 번째 경우에서 어떤 일이 일어 났습니까? 첫 번째 경우와 두 번째 경우 DB 서버에 무엇이 전송됩니까?
감사합니다.
어림짐작이 있습니까? 내 응용 프로그램은 순차적으로 약 100 개의 다른 sqls를 실행하므로 PreparedStatement 풀을 50 개의 히트 비율과 같게하면 0이됩니다 (LRU?). – j23
가장 간단한 방법은'maxStatementsPerConnection'을 사용하고 응용 프로그램에서 자주 사용하는 PreparedStatements 수로 설정하는 것입니다. (응용 프로그램 초기화에 사용되는 명령문을 무시하거나 관리 목적으로 자주 사용되지 않는 명령문 등) 앱이 항상 순차적으로 100 개의 PreparedStatement를 실행하는 경우 'maxStatementsPerConnection'을 100으로 설정하면 위험 할 수 있습니다 그 기억과 자원의 발자취가 어떤 이점보다 중요 할 것이며 당신은 없이는 더 나아질 것입니다. 너는보아야 할 것이다. –