determine which connections to hold in pool by relative value
-------------------------------------------------------------

                 Key: DBCP-368
                 URL: https://issues.apache.org/jira/browse/DBCP-368
             Project: Commons Dbcp
          Issue Type: New Feature
            Reporter: Philip Williams


Situation: a Firebird-Classic database (each connection has independent 
metadata cache), in a metadata-heavy environment; many "quick" actions will 
never force the database server to load full metadata, but a few will, in our 
case resulting in 200MB of metadata cache in memory (takes about 3 seconds to 
load, visible latency to the user); any connection that has done this is "more 
valuable" to us, and we'd prefer to keep those connections in the pool, and 
remove idle connections which haven't incurred this cost yet and are relatively 
cheap to recreate later if our load increases. Doing this is preferable to 
forcing ALL connections to load metadata at start, as this means the pool will 
always have a startup cost (in time), and the server will likely use more 
memory than really necessary.
Proposal: add new configuration parameter; if set, run the SQL string and get 
back a single-column, single-row result-set containing an arbitrary "value" as 
determined by the connection; prefer to close the lowest(?)-value connections 
first, to get down to the configured minIdle. Would require querying each open 
connection, when the pool is over-full, to determine which ones are most 
valuable. If not set, use current algorithm (based on age?).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to