Hi Thomas, patch is yours, if you would like to modify parameters do it. This way it does not require so much codding in parameters parsing. And it also better reflect implementation
I found one problem with soft cache. When heap is full of cached pages, and program starts huge&fast allocation (big collection etc), references are not cleared fast enought and it may fail with out of memory exception. Using MapMaker from Google collection would propably improve this very much, but it depends on JRE 1.5. In future I may implement this as optional dependency for JRE 1.5 (without breaking compablity with 1.3) Jan On Thu, Apr 30, 2009 at 5:37 AM, Thomas Mueller <[email protected]> wrote: > > Hi, > > Thanks a lot! Unfortunately, I did not yet have time to analyze the > patch. I think the SOFT type is not usefull (as you found out). I'm > not sure if using a second parameter makes sense, I think it would > simplify things if there is only one type. What about > > CACHE_TYPE=LRU, TQ, WEAK_LRU, WEAK_TQ > > Regards, > Thomas > > On Sun, Apr 26, 2009 at 2:47 PM, Jan Kotek <[email protected]> wrote: >> Hi Thomas, >> here is final version of cache. I changed design. Now it is >> implemented as 2nd level cache which wraps original cache (proxy >> pattern). So it does not interfier with existing caching mechanism. It >> adds new connection parameter CACHE2_TYPE with possible values WEAK, >> SOFT and HARD. It is not used by default, maybe in future you can make >> SOFT default. >> >> I also modified documentation: >> H2 also supports 2nd level cache. It uses WEAK, SOFT or HARD >> references. With WEAK reference >> page is stored in cache until it is Garbage Collected (GCed). With >> SOFT reference pages are >> GCed only when system is low on memory. With HARD reference pages are >> never GCed, so you need >> to make sure you have enought memory to fit entire DB into it.By >> default H2 does not use 2nd >> level cache, in future SOFT may became default option. 2nd level cache >> can be enabled by parameter >> in database connection URL: (jdbc:h2:~/test;CACHE2_TYPE=SOFT) >> >> I ran your unit test with SOFT as default, only TestMemoryUsage' was >> failing (propably because of cache). It should be compatibile with JRE >> 1.3. For my usages it increases performance significantly (JRE 1.6) >> with -Xmx512m >> >> This is final version of my patch. I will not modify unless bug >> reports are reported. It also updates documentation and change log. >> >> Thomas: feel free to modify licence as you need. >> >> Best regards, >> Jan >> >> >> On Sun, Apr 19, 2009 at 5:42 PM, Thomas Mueller >> <[email protected]> wrote: >>> >>> Hi, >>> >>> Thanks for the patch! What about using a new cache type? The easiest >>> solution is to replace the the 2Q algorithm with the soft reference >>> cache; better would be to use a new type (for example SOFT). >>> >>>> So I implemented cache using SoftReference. My prototype is attached. >>>> It should be fine for read-only usage. >>> >>> What about combining it with LRU? So that written pages are kept in >>> the LRU, and the read part is kept in the soft reference map? >>> >>>> Please try it with lot of memory free memory and read only scenario. >>>> If it will be better then current cache I will continue and finish >>>> implementation. >>> >>> I'm sorry, but I don't have much time to test it currently... But I'm >>> sure it will be better than the current cache algorithm, because it >>> doesn't require any settings and still will use all available memory. >>> >>>> I need motivation :-) >>> >>> If you like, we could call it the "Jan Kotek" cache :-) >>> jdbc:h2:~/test;CACHE=JAN_KOTEK >>> >>> If you want to make integrating the patch simpler for me, I suggest >>> you follow the patch guidelines described at >>> http://www.h2database.com/html/build.html#providing_patches >>> >>> Regards, >>> Thomas >>> >>> > >>> >> >> <div><br></div> >> >> > >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/h2-database?hl=en -~----------~----~----~----~------~----~------~--~---
