【JPIERE-0283】PostgreSQLのSQLキャッシュリセット

 PostgreSQLで実行されるSQLは、iDempiere上でキャッシュされています。キャッシュしているSQLの中には、めったに使用しないようなSQLも多数あり、定期的にキャッシュをリセットしないと、無駄なキャッシュでメモリ(Javaのヒープメモリ)を浪費しています。

 一方で、iDempiereの標準のキャッシュリセット処理は、テーブルごとに実施する事ができますが、SQLのキャッシュはテーブルではないため、個別にリセットする事ができまず、SQLのキャッシュをリセットするためには、すべてのキャッシュをリセットしなければいけません。

 そのためJPiereでは、PostgreSQLで実行されるSQLを個別指定してキャッシュリセットできるようにカスタマイズしました。

PostgreSQLのSQLキャッシュリセットプロセス
PostgreSQLのSQLキャッシュリセットプロセス

java

 キャッシュリセットの引数に"DB_PostgreSQL_Convert_Cache"を渡して下さい。

CacheMgt.get().reset("DB_PostgreSQL_Convert_Cache");

カスタマイズ情報

モディフィケーションクラス

◆org.compiere.util.CacheMgt

protected int resetLocalCache (String tableName, int Record_ID)メソッド

2024年11月30日: CacheMgtクラスをモディフィケーションしないで済むようにリファクタリングしました。

追加クラス

◆org.compiere.util.CacheReset_PostgreSQL

PosgreSQLのSQLのキャッシュリセットを実行するプロセス

カスタマイズ履歴

2024年11月30日(v11): リファクタリング

CacheMgtクラスをモディフィケーションしなくても、PostgreSQLのキャッシュをクリアできるようにリファクタリングしました。