データベーステーブルのクリーンアップ
データベーステーブルのクリーンアップ
Alfresco では、監査エントリまたは属性エントリを削除しても、実際に関連するデータがすべて削除されるわけではありません。alf_prop_*
テーブルの構造は、個々の文字列や数値のデータ要素を頻繁に再利用するように設計されており、同じ値が他の要素で参照される可能性があるため、監査エントリまたは属性エントリの削除に伴うカスケード削除は行われません。
Alfresco 4.1.9、4.2.2(Enterpriseバージョン)およびAlfresco 5.0( Community バージョン)以降、Alfrescoには、alf_prop_*
テーブルのダングリングデータ(どこからも参照されていないデータ)をクリーンアップするジョブがデフォルトで組み込まれています。このCRONジョブはデフォルトでは無効になっており、実行できるようにするには再設定する必要があります。
データベーステーブルのクリーンアップスケジュールを設定する
propTablesCleanupTrigger
スクリプトのスケジュールを設定するか、またはこのスクリプトを手動で起動することにより、監査値とプロパティ値のテーブル( alf_audit_
テーブルと alf_prop_
テーブル)をクリーンアップできます。
大規模なデータベース(テーブルのサイズが1,000万行を超えるものなど)に対してスケジュールされたクリーンアップジョブを実行する場合は、V2クリーンアップジョブを使用してください。これは、Content Services 6.2.1以降で使用されるデフォルトのアルゴリズムです。詳しくは、データベーステーブルのクリーンアップスケジュールを設定するための代替方法 を参照してください。
propTablesCleanupTrigger
は、MonitoredCronTrigger
のスクリプトです。alfresco-global.properties
ファイルまたはJMXを使用して、このスクリプトを実行するスケジュールを設定できます。
このスクリプトをスケジュールに従って実行するには、alfresco-global.properties
ファイルに次の行を追加します。
attributes.propcleaner.cronExpression=* * * * * ? 2099
このプロパティはデフォルトで、Quartz Cron 式の0 0 3 ? * SAT
に設定されており、毎週土曜日の午前3時に実行されます。Alfresco は、必要な場合を除き、このデフォルト値を変更しないことをお勧めします。
デバッグ情報に表示される出力例を次に示します。
2020-04-14 13:22:17,493 INFO [schema.script.ScriptExecutorImpl] [DefaultScheduler_Worker-3] Processing from 0 to 100000 rows of 2 rows from table alf_audit_app.
2020-04-14 13:22:17,493 INFO [schema.script.ScriptExecutorImpl] [DefaultScheduler_Worker-3] Processing from 0 to 1 rows of 0 rows from table alf_audit_entry.
2020-04-14 13:22:17,509 INFO [schema.script.ScriptExecutorImpl] [DefaultScheduler_Worker-3] Processing from 0 to 100000 rows of 1 rows from table alf_prop_unique_ctx.
2020-04-14 13:22:17,524 INFO [schema.script.ScriptExecutorImpl] [DefaultScheduler_Worker-3] Processing from 0 to 100000 rows of 3 rows from table alf_prop_root.
デフォルトのバッチサイズは100,000行です。
注意:propTablesCleanupTrigger
スクリプトは、定期的なスケジュールに従ってデータベーステーブルをクリーンアップできるように設計されています。サーバーの負荷が最小限またはゼロの時間帯に、このスクリプトを実行するようにしてください。propTablesCleanupTrigger
スクリプトの実行中にサーバーに負荷がかかると、データベースの競合や関連エラーが発生することがあります。
データベーステーブルのクリーンアップスケジュールを設定するための代替方法
別のアルゴリズムを使用して、データベーステーブルをクリーンアップすることもできます。このアルゴリズムは、大規模なデータベース(テーブルのサイズが1,000万行を超えるものなど)に推奨されます。これは、Content Services 6.2.1以降で使用されるデフォルトのアルゴリズムです。
プロパティテーブルクリーナーのデフォルトの設定
V1クリーンアップジョブのデフォルトの設定を次に示します。
system.prop_table_cleaner.algorithm=V1
# Prop cleaner V2 properties
system.delete_not_exists.batchsize=100000
system.delete_not_exists.delete_batchsize=1000
system.delete_not_exists.read_only=false
system.delete_not_exists.timeout_seconds=-1
Content Services 6.2.1より前のバージョンを実行している場合は、以下の手順に従って、V2アルゴリズムを使用してください。
読み取り専用モードで新規ジョブを実行する
alfresco-global.properties
で、プロパティテーブルクリーナーのデフォルトプロパティを変更します。新しいプロパティクリーナーアルゴリズムを有効にします。
プロパティクリーナーを読み取り専用に設定します。
プロパティクリーナーのタイムアウトを設定します。
アプリケーションサーバーを再起動します。
Webブラウザを起動します。
<alfresco_ip>/alfresco/s/enterprise/admin/admin-log-settings
に移動します。デバッグログを有効にして、アルゴリズムによって削除されるデータ量を確認します。パッケージ名のログ設定を
DEBUG
に変更します。
Webブラウザで
<alfresco_ip>/alfresco/s/enterprise/admin/admin-scheduledjobs
に移動し、propTablesCleanupJobDetail
ジョブを実行します。ログを確認し、各テーブルからどの値が削除されるかを確認します。
次のような内容が表示されます。
新しいジョブをデフォルトで実行する
alfresco-global.properties
で、プロパティテーブルクリーナーのデフォルトプロパティを変更します。新しいプロパティクリーナーアルゴリズムを有効にします。
プロパティクリーナーを削除に設定します。
プロパティクリーナーのタイムアウトを設定します。
アプリケーションサーバーを再起動します。
Webブラウザを起動します。
<alfresco_ip>/alfresco/s/enterprise/admin/admin-log-settings
に移動します。デバッグログを有効にして、アルゴリズムによって削除されたデータ量を確認します。
パッケージ名org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor
のログ設定をDEBUG
に変更します。
注意:いくつかのテーブルでカスケード削除が有効になっているため、アルゴリズムによって初期値以外の値が削除される可能性があります。
Webブラウザを起動し、
<alfresco_ip>/alfresco/s/enterprise/admin/admin-scheduledjobs
に移動し、propTablesCleanupJobDetail
ジョブを実行します。ログを確認し、各テーブルからどの値が削除されたかを確認します。
次のような内容が表示されます。
注目ポイント:
サーバーやデータベースには、お客様ごとに独自の設定が適用されていると考えられるため、タイムアウトプロパティの設定を検証するようにしてください。この設定は、システムの能力や負荷に応じて変更する必要があります。
このアルゴリズムは、システムの能力に応じてバッチ値を変更することで、さらに改良することができます。
注意:いくつかのテーブルでカスケード削除が有効になっているため、読み取り専用モードで実行すると、アルゴリズムにより、指定された初期値より多く削除される可能性があります。
より詳細なログを収集するには、パッケージ名org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor
のログ設定をTRACE
に変更します。
重要:この変更により、多くのログが生成される可能性があるため、不要な場合はデフォルトのログレベルに戻してください。
ログレベルを戻さない場合、大量のログ出力によりパフォーマンスの低下、ログ肥大化によるディスク容量不足によるシステム停止など、大きな障害が発生する可能性があります。
リックソフト株式会社 は、日本でトップレベルのAtlassian Platinum Solution Partnerです。
大規模ユーザーへの対応実績が認められたEnterpriseの認定をうけ、高度なトレーニング要件をクリアし、小規模から大規模のお客様まで対応可能な実績を示したパートナー企業です。
Copyright © Ricksoft Co., Ltd. プライバシーポリシー お問い合わせ