case 'memqcache_oiddir':
case 'white_memqcache_table_lsit':
case 'black_memqcache_table_list':
+ case 'relcache_size':
$add_version = 3.2;
break;
$pgpoolConfigParam[$key]['min'] = 0;
$pgpoolConfigParam[$key]['max'] = NUM_MAX;
+$key = 'relcache_size';
+$pgpoolConfigParam[$key]['type'] = 'N';
+$pgpoolConfigParam[$key]['default'] = 0;
+$pgpoolConfigParam[$key]['min'] = 0;
+$pgpoolConfigParam[$key]['max'] = NUM_MAX;
+
#------------------------------------------------------------------------------
# Deleted
#------------------------------------------------------------------------------
'descRecovery_2nd_stage_command' => 'Recovery command to be excuted on the second stage',
'descRecovery_timeout' => 'Number of seconds to wait for online recovery to complete. 0 means no wait',
'descRelcache_expire' => 'Life time of relation cache in seconds',
+ 'descRelcache_size' => 'Size of relation cache in bytes',
'descReplication_mode' => 'Set this to true if you are going to use replication functionality',
'descReplication_stop_on_mismatch' => 'Stop replication mode on data mismatch between master and secondary',
'descReplicate_select' => 'If true, replicate SELECT queries. If false, send only to master',
'descRecovery_2nd_stage_command' => 'オンラインリカバリ第2ステージで実行するコマンド',
'descRecovery_timeout' => 'オンラインリカバリ終了までの待ち時間(秒)。0 は待ち時間無し',
'descRelcache_expire' => 'システムカタログキャッシュの有効時間(秒)',
+ 'descRelcache_size' => 'システムカタログキャッシュのサイズ(バイト)',
'descReplication_mode' => 'レプリケーションモードの有効化',
'descReplication_stop_on_mismatch' => 'マスタ/セカンダリ間のデータ不一致時に縮退運転',
'descReplicate_select' => 'SELECT 文のレプリケーション',
</td>
</tr>
+ {if paramExists('ssl')}
<tr><th class="category" colspan="2">SSL Connections</th></tr>
<tr>
<td>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('backend_flag')}
<tr>
<th id="BACKEND_FLAG"><label>{$message.descBackend_flag|escape}</label>
<p>backend_flag (string) *</th>
</table>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</tr>
</thead>
<tbody>
+ {if paramExists('log_destination')}
<tr><th class="category" colspan="2">Where to log</th></tr>
<tr>
<p>to the syslog daemon's configuration file to make it work.</p>
</td>
</tr>
+ {/if}
<tr><th class="category" colspan="2">What to log</th></tr>
</td>
</tr>
+ {if paramExists('log_per_node_statement')}
<tr>
<th id~"LOG_PER_NODE_STATEMENT"><label>{$message.descLog_per_node_statement|escape}</label>
<p>log_per_node_statement (bool)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('log_standby_delay')}
<tr>
<th id="LOG_STANDBY_DELAY"><label>{$message.descLog_standby_delay|escape}</label>
<p>log_standby_delay (string)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('syslog_facility')}
<tr><th class="category" colspan="2">Syslog specific</th></tr>
<tr>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('debug_level')}
<tr><th class="category" colspan="2">Debug</th></tr>
<tr>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('pid_file_name')}
<tr>
<th id="PID_FILE_NAME"><label>{$message.descPid_file_name|escape}</label>
<p>pid_file_name (string) *</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('lobj_lock_table')}
<tr>
<th id="LOBJ_LOCK_TABLE"><label>{$message.descLobj_lock_table|escape}</label>
<p>lobj_lock_table (string)</th>
</p>
</td>
</tr>
+ {/if}
<tr><th class="category" colspan="2">Degenerate handling</th></tr>
</td>
</tr>
+ {if paramExists('failover_if_affected_tuples_mismatch')}
<tr>
<th id="FAILOVER_IF_AFFECTED_TUPLES_MISMATCH"><label>{$message.descFailover_if_affected_tuples_mismatch|escape}</label>
<p>failover_if_affected_tuples_mismatch (bool)</th>
degenerated. Default is false.</p>
</td>
</tr>
+ {/if}
+ {if paramExists('fail_over_on_backend_error')}
<tr>
<th id="FAIL_OVER_ON_BACKEND_ERROR"><label>{$message.descFail_over_on_backend_error|escape}</label>
<p>fail_over_on_backend_error</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('white_function_list')}
<tr>
<th id="WHITE_FUNCTION_LIST"><label>{$message.descWhite_function_list|escape}</label>
<p>white_function_list (string)</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('sr_check_period')}
<tr><th class="category" colspan="2">Streaming</th></tr>
<tr>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('delay_threshold')}
<tr>
<th id="DELAY_THRESHOLD"><label>{$message.descDelay_threshold|escape}</label>
<p>delay_threshold (integer)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('follow_master_command')}
<tr><th class="category" colspan="2">Special commands</th></tr>
<tr>
<th id="FOLLOW_MASTER_COMMAND"><label>{$message.descFollow_master_command|escape}</label>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
<tr>
</td>
</tr>
+ {if paramExists('enable_query_cache')}
<tr>
<th id="ENABLE_QUERY_CACHE"><label>{$message.descEnable_query_cache|escape}</label>
<p>enable_query_cache *</th>
</p>
</td>
</tr>
+ {/if}
<tr>
<th id="PGPOOL2_HOSTNAME"><label>{$message.descPgpool2_hostname|escape}</label>
</td>
</tr>
+ {if paramExists('health_check_password')}
<tr>
<th id="HEALTH_CHECK_PASSWORD"><label>{$message.descHealth_check_password|escape}</label>
<p>health_check_password (string)</th>
<p>The password of the user to perform health check.</p>
</td>
</tr>
+ {/if}
+ {if paramExists('health_check_max_retries')}
<tr>
<th id="HEALTH_CHECK_MAX_RETRIES"><label>{$message.descHealth_check_max_retries|escape}</label>
<p>health_check_max_retries (integer)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('health_check_retry_delay')}
<tr>
<th id="HEALTH_CHECK_RETRY_DELAY"><label>{$message.descHealth_check_retry_delay|escape}</label>
<p>health_check_retry_delay (integer)</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
<tr>
</td>
</tr>
+ {if paramExists('client_idle_limit_in_recovery')}
<tr>
<th id="CLIENT_IDLE_LIMIT_IN_RECOVERY"><label>{$message.descClient_idle_limit_in_recovery|escape}</label>
<p>client_idle_limit_in_recovery (integer)</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</table>
+{if hasMemqcache()}
<h3><a name="memqcache" id="memqcache">On Memory Query Cache</a></h3>
<table>
</tr>
</tfoot>
</table>
+{/if}
+{if paramExists('relcache_expire')}
<h3><a name="others">Others</a></h3>
<table>
</p>
</td>
</tr>
+
+ {if paramExists('relcache_size')}
+ <tr>
+ <th id="RELCACHE_SIZE"><label>{$message.descRelcache_size|escape}</label>
+ <p>relcache_size (integer)</th>
+ <td>
+ <p>Size of relation cache in seconds. Default is 256.
+ If you see following message frequently, increase the number. </p>
+<pre>
+"pool_search_relcache: cache replacement happend"
+</pre>
+ </td>
+ </tr>
+ {/if}
</tbody>
<tfoot>
<tr>
</tr>
</tfoot>
</table>
+{/if}
</div>
<hr class="hidden" />
</td>
</tr>
+ {if paramExists('ssl')}
<tr><th class="category" colspan="2">SSL Connections</th></tr>
<tr>
<td>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</tr>
</thead>
<tbody>
+ {if paramExists('backend_socket_dir')}
<tr>
<th id="BACKEND_SOCKET_DIR"><label>{$message.descBackend_socket_dir|escape}</label>
<p>backend_socket_dir (string) *</th>
<td>PostgreSQL サーバの Unix domain socket のディレクトリです。</p>
<p>デフォルト値は'/tmp'です。</td>
</tr>
+ {/if}
<tr>
<th id="BACKEND_HOSTNAME"><label>{$message.descBackend_hostname|escape}</label>
</td>
</tr>
+ {if paramExists('backend_flag')}
<tr>
<th id="BACKEND_FLAG"><label>{$message.descBackend_flag|escape}</label>
<p>backend_flag (string) *</th>
</table>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
<tbody>
<tr><th class="category" colspan="2">Where to log</th></tr>
+ {if paramExists('log_destination')}
<tr>
<th id="LOG_DESTINATION"><label>{$message.descLog_destination|escape}</label>
<p>log_destination (string) *</th>
</p>
<p>
pgpool-II は、syslog ファシリティ LOCAL0 から LOCAL7 までにログを書くことができます
- (syslog_facilityをご覧ください)。
+ (<a href="#SYSLOG_FACILITY">syslog_facility</a> をご覧ください)。
しかし、ほとんどのデフォルトの syslog 設定は、そのようなメッセージを廃棄してしまいます。
そこで、syslog デーモンの以下のような設定が必要になります。
</p>
- <pre>
+<pre>
local0.* /var/log/pgpool.log
- </pre>
+</pre>
</td>
</tr>
+ {/if}
<tr><th class="category" colspan="2">What to log</th></tr>
</td>
</tr>
+ {if paramExists('syslog_facility')}
<tr><th class="category" colspan="2">Syslog specific</th></tr>
<tr>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('debug_level')}
<tr><th class="category" colspan="2">Debug</th></tr>
<tr>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
<p>デフォルト値は '/tmp' です。</p></td>
</tr>
+ {if paramExists('pid_file_name')}
<tr>
<th id="PID_FILE_NAME"><label>{$message.descPid_file_name|escape}</label>
<p>pid_file_name (string) *</th>
<p>pgpool-II の pid file(プロセス IDを 格納したファイル)のフルパス名です。</p>
<p>デフォルト値は'/var/run/pgpool/pgpool.pid'です。</p></td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('lobj_lock_table')}
<tr>
<th id="LOBJ_LOCK_TABLE"><label>{$message.descLobj_lock_table|escape}</label>
<p>lobj_lock_table (string)</th>
</p>
</td>
</tr>
+ {/if}
<tr><th class="category" colspan="2">Degenerate handling</th></tr>
</td>
</tr>
+ {if paramExists('failover_if_affected_tuples_mismatch')}
<tr>
<th id="FAIL_OVER_IF_AFFECTED_TUPLES_MISMATCH"><label>{$message.descFailover_if_affected_tuples_mismatch|escape}</label>
<p>failover_if_affected_tuples_mismatch (bool)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('fail_over_on_backend_error')}
<tr>
<th id="FAIL_OVER_ON_BACKEND_ERROR"><label>{$message.descFail_over_on_backend_error|escape}</label>
<p>fail_over_on_backend_error</th>
</p>
</td>
</tr>
+ {/if}
<tr>
<th id="REPLICATION_TIMEOUT"><label>{$message.descReplication_timeout|escape}</label>
</td>
</tr>
+ {if paramExists('ignore_leading_white_space')}
<tr>
<th id="IGNORE_LEADING_WHITE_SPACE"><label>{$message.descIgnore_leading_white_space|escape}</label>
<p>ignore_leading_white_space (bool)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('white_function_list')}
<tr>
<th id="WHITE_FUNCTION_LIST"><label>{$message.descWhite_function_list|escape}</label>
<p>white_function_list (string)</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</td>
</tr>
+ {if paramExists('sr_check_period')}
<tr><th class="category" colspan="2">Streaming</th></tr>
<tr>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('follow_master_command')}
<tr><th class="category" colspan="2">Special commands</th></tr>
<tr>
<th id="FOLLOW_MASTER_COMMAND"><label>{$message.descFollow_master_command|escape}</label>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
<tr>
<p>デフォルト値は false です。</td>
</tr>
+ {if paramExists('enable_pool_hba')}
<tr>
<th id="ENABLE_QUERY_CACHE"><label>{$message.descEnable_query_cache|escape}</label>
<p>enable_query_cache *</th>
<td>SELECT の結果をキャッシュする場合には true にします。
<p>デフォルト値は false です。</td>
</tr>
+ {/if}
<tr>
<th id="PGPOOL2_HOSTNAME"><label>{$message.descPgpool2_hostname|escape}</label>
</td>
</tr>
+ {if paramExists('health_check_password')}
<tr>
<th id="HEALTH_CHECK_PASSWORD"><label>{$message.descHealth_check_password|escape}</label>
<p>health_check_password (string)</th>
<p>ヘルスチェックを行うためのPostgreSQLパスワードです。</p>
</td>
</tr>
+ {/if}
+ {if paramExists('health_check_max_retries')}
<tr>
<th id="HEALTH_CHECK_MAX_RETRIES"><label>{$message.descHealth_check_max_retries|escape}</label>
<p>health_check_max_retries (integer)</th>
</p>
</td>
</tr>
+ {/if}
+ {if paramExists('health_check_retry_delay')}
<tr>
<th id="HEALTH_CHECK_RETRY_DELAY"><label>{$message.descHealth_check_retry_delay|escape}</label>
<p>health_check_retry_delay (integer)</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
<tr>
</td>
</tr>
+ {if paramExists('client_idle_limit_in_recovery')}
<tr>
<th id="CLIENT_IDLE_LIMIT_IN_RECOVERY"><label>{$message.descClient_idle_limit_in_recovery|escape}</label>
<p>client_idle_limit_in_recovery (integer)</th>
</p>
</td>
</tr>
+ {/if}
</tbody>
<tfoot>
</table>
+{if hasMemqcache()}
<h3><a name="memqcache" id="memqcache">On Memory Query Cache</a></h3>
<table>
</tr>
</tfoot>
</table>
-
+{/if}
<h3><a name="others">Others</a></h3>
+{if paramExists('relcache_expire')}
<table>
<thead>
<tr>
</p>
</td>
</tr>
+
+ {if paramExists('relcache_size')}
+ <th id="RELCACHE_SIZE"><label>{$message.descRelcache_size|escape}</label>
+ <p>relcache_size (integer)</th>
+ <td>
+ <p>リレーションキャッシュのサイズを指定します。 デフォルトは256です。</p>
+<pre>
+"pool_search_relcache: cache replacement happend"
+</pre>
+ <p>のようなメッセージがログに頻繁に出る場合は、この数字を大きくしてください。</p>
+ </td>
+ </tr>
+ {/if}
</tbody>
<tfoot>
<tr>
</tr>
</tfoot>
</table>
+{/if}
</div>
<hr class="hidden" />
<td><input type="text" name="relcache_expire" value="{$params.relcache_expire|escape}"/></td>
</tr>
+ {if paramExists('relcache_size')}
+ <tr>
+ <th{if isset($error.relcache_size)} class="error"{/if}>
+ <label>{$message.descRelcache_size|escape}</label>
+ <br />relcache_size (integer)</th>
+ <td><input type="text" name="relcache_size" value="{$params.relcache_size|escape}"/></td>
+ </tr>
+ {/if}
+
</tbody>
</table>
{/if}