@Override
public <K, V> MySQLDiskCache<K, V> createCache( AuxiliaryCacheAttributes rawAttr,
ICompositeCacheManager compositeCacheManager,
ICacheEventLogger cacheEventLogger, IElementSerializer elementSerializer )
throws SQLException
{
MySQLDiskCacheAttributes cattr = (MySQLDiskCacheAttributes) rawAttr;
TableState tableState = getTableState( cattr.getTableName() );
DataSourceFactory dsFactory = getDataSourceFactory(cattr, compositeCacheManager.getConfigurationProperties());
MySQLDiskCache<K, V> cache = new MySQLDiskCache<K, V>( cattr, dsFactory, tableState, compositeCacheManager );
cache.setCacheEventLogger( cacheEventLogger );
cache.setElementSerializer( elementSerializer );
createShrinkerWhenNeeded( cattr, cache );
scheduleOptimizations( cattr, tableState, cache.getDataSource() );
return cache;
}