xdocs/MySQLDiskCacheProperties.xml (162 lines of code) (raw):

<?xml version="1.0"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <document> <properties> <title>MySQL Disk Cache Configuration</title> <author email="asmuts@apache.org">Aaron Smuts</author> </properties> <body> <section name="MySQL Disk Auxiliary Cache Configuration"> <p> The MySQL Disk Cache uses all of the JDBC Disk Cache properties. It adds a few of its own. The following properties only apply to the MySQL Disk Cache plugin. </p> <subsection name="MySQL Disk Configuration Properties"> <table> <tr> <th>Property</th> <th>Description</th> <th>Required</th> <th>Default Value</th> </tr> <tr> <td>optimizationSchedule</td> <td> For now this is a simple comma delimited list of HH:MM:SS times to optimize the table. If none is supplied, then no optimizations will be performed. In the future we can add a cron like scheduling system. This was created to meet a pressing need to optimize fragmented MyISAM tables. When the table becomes fragmented, it starts to take a long time to run the shrinker that deletes expired elements. Setting the value to "03:01,15:00" will cause the optimizer to run at 3 am and at 3 pm. </td> <td>N</td> <td>null</td> </tr> <tr> <td>balkDuringOptimization</td> <td> If this is true, then when JCS is optimizing the table it will return null from get requests and do nothing for put requests. If you are using the remote cache and have a failover server configured in a remote cache cluster, and you allow clustered gets, the primary server will act as a proxy to the failover. This way, optimization should have no impact for clients of the remote cache. </td> <td>N</td> <td>true</td> </tr> </table> </subsection> <subsection name="Example Configuration"> <source> <![CDATA[ ############################################################## ################## AUXILIARY CACHES AVAILABLE ################ # MYSQL disk cache jcs.auxiliary.MYSQL=org.apache.commons.jcs3.auxiliary.disk.jdbc.mysql.MySQLDiskCacheFactory jcs.auxiliary.MYSQL.attributes=org.apache.commons.jcs3.auxiliary.disk.jdbc.mysql.MySQLDiskCacheAttributes jcs.auxiliary.MYSQL.attributes.userName=sa jcs.auxiliary.MYSQL.attributes.password= jcs.auxiliary.MYSQL.attributes.url=jdbc:hsqldb:target/cache_hsql_db jcs.auxiliary.MYSQL.attributes.driverClassName=org.hsqldb.jdbcDriver jcs.auxiliary.MYSQL.attributes.tableName=JCS_STORE_MYSQL jcs.auxiliary.MYSQL.attributes.testBeforeInsert=false jcs.auxiliary.MYSQL.attributes.maxActive=15 jcs.auxiliary.MYSQL.attributes.allowRemoveAll=true jcs.auxiliary.MYSQL.attributes.MaxPurgatorySize=10000000 jcs.auxiliary.MYSQL.attributes.optimizationSchedule=12:34:56,02:34:54 jcs.auxiliary.MYSQL.attributes.balkDuringOptimization=true ]]> </source> </subsection> <subsection name="MySQL Disk Event Queue Configuration"> <table> <tr> <th>Property</th> <th>Description</th> <th>Required</th> <th>Default Value</th> </tr> <tr> <td>EventQueueType</td> <td> This should be either SINGLE or POOLED. By default the single style pool is used. The single style pool uses a single thread per event queue. That thread is killed whenever the queue is inactive for 30 seconds. Since the disk cache uses an event queue for every region, if you have many regions and they are all active, you will be using many threads. To limit the number of threads, you can configure the disk cache to use the pooled event queue. Using more threads than regions will not add any benefit for the indexed disk cache, since only one thread can read or write at a time for a single region. </td> <td>N</td> <td>SINGLE</td> </tr> <tr> <td>EventQueuePoolName</td> <td> This is the name of the pool to use. It is required if you choose the POOLED event queue type, otherwise it is ignored. </td> <td>Y</td> <td>n/a</td> </tr> </table> </subsection> <subsection name="Example Configuration Using Thread Pool"> <source> <![CDATA[ ############################################################## ################## AUXILIARY CACHES AVAILABLE ################ # MYSQL disk cache jcs.auxiliary.MYSQL=org.apache.commons.jcs3.auxiliary.disk.jdbc.mysql.MySQLDiskCacheFactory jcs.auxiliary.MYSQL.attributes=org.apache.commons.jcs3.auxiliary.disk.jdbc.mysql.MySQLDiskCacheAttributes jcs.auxiliary.MYSQL.attributes.userName=sa jcs.auxiliary.MYSQL.attributes.password= jcs.auxiliary.MYSQL.attributes.url=jdbc:hsqldb:target/cache_hsql_db jcs.auxiliary.MYSQL.attributes.driverClassName=org.hsqldb.jdbcDriver jcs.auxiliary.MYSQL.attributes.tableName=JCS_STORE_MYSQL jcs.auxiliary.MYSQL.attributes.testBeforeInsert=false jcs.auxiliary.MYSQL.attributes.maxActive=15 jcs.auxiliary.MYSQL.attributes.allowRemoveAll=true jcs.auxiliary.MYSQL.attributes.MaxPurgatorySize=10000000 jcs.auxiliary.MYSQL.attributes.optimizationSchedule=12:34:56,02:34:54 jcs.auxiliary.MYSQL.attributes.balkDuringOptimization=true jcs.auxiliary.MYSQL.attributes.EventQueueType=POOLED jcs.auxiliary.MYSQL.attributes.EventQueuePoolName=disk_cache_event_queue ############################################################## ################## OPTIONAL THREAD POOL CONFIGURATION ######### # Disk Cache pool thread_pool.disk_cache_event_queue.useBoundary=false thread_pool.disk_cache_event_queue.boundarySize=500 thread_pool.disk_cache_event_queue.maximumPoolSize=15 thread_pool.disk_cache_event_queue.minimumPoolSize=10 thread_pool.disk_cache_event_queue.keepAliveTime=3500 thread_pool.disk_cache_event_queue.whenBlockedPolicy=RUN thread_pool.disk_cache_event_queue.startUpSize=10 ]]> </source> </subsection> </section> </body> </document>