アップグレードを高速化するためのデータベースプルーニング
データ量が増えるほど、データのアップグレードにかかる時間は長くなります。 不要なサイトデータはよく発生します。 データベースから不要なデータを削除すると、アップグレード プロセスのパフォーマンスが向上します。
たとえば、サイトには、Web コンテンツ記事やドキュメント、メディア ファイルの未使用バージョンが多数保存されている場合があります。 修正が完了し、中間修正が必要ない場合は、安全に削除できます。 これにより、スペースとアップグレード時間を節約できます。
データベースのプルーニングに関するトピックは次のとおりです。
- 重複するWeb コンテンツストラクチャーのフィールド名を削除する
- 未使用のオブジェクトの検索と削除
- プルーニングされたデータベースのコピーを使用してテストする
廃止されたデータの削除
データベースに古いデータが含まれている可能性があります。 Liferay はアップグレードを実行するときにこれを自動的に処理しますが、 データ クリーンアップ ツールを使用してこのデータを自分で削除することもできます。
重複するWeb コンテンツストラクチャーのフィールド名を削除する
Web コンテンツ管理を頻繁に使用している場合は、一意のフィールド名のない構造が存在する可能性があります。 アップグレードする前に、重複するフィールド名を見つけて削除します。 以前に Liferay Portal 6.2 にアップグレードしてこれをスキップした場合、次のエラーが発生します。
19:29:35,298 ERROR [main][VerifyProcessTrackerOSGiCommands:221] com.liferay.portal.verify.VerifyException: com.liferay.dynamic.data.mapping.validator.DDMFormValidationException$MustNotDuplicateFieldName: The field name page cannot be defined more than once
com.liferay.portal.verify.VerifyException: com.liferay.dynamic.data.mapping.validator.DDMFormValidationException$MustNotDuplicateFieldName: The field name page cannot be defined more than once
このエラーが発生した場合は、Liferay Portal 6.2 の以前のバックアップにロールバックし、重複するフィールド名を見つけて削除してください。
未使用のオブジェクトの削除
データベースには、使用されていないオブジェクトのデータが残っている場合があります。
- UI で、またはデータベースで
SELECTクエリを使用して他の未使用のオブジェクトを特定し、UI、 スクリプト コンソール経由の API、または作成したポートレットを使用してオブジェクトを削除します。
LiferayのUIまたはAPIはLiferay DXPのオブジェクト間の関係を考慮しているため、データの操作にはLiferayのUIまたはAPIのみを使用してください。 データベースでSQLを直接使用してレコードを削除しないでください。 SQLがオブジェクトの関係を見失い、オブジェクトが孤立し、パフォーマンスの問題が発生する可能性があります。
次に、未使用のオブジェクトを確認する一般的な場所をいくつか示します。
大規模/データのあるテーブルからのオブジェクト
テーブル行は Liferay DXP のオブジェクトにマッピングされます。 多数のレコードを含む大きなテーブルには、未使用のオブジェクトが多数含まれている可能性があります。 テーブルのサイズとテーブルあたりのレコード数が大きいほど、アップグレードにかかる時間は長くなります。
このようなテーブルに関連付けられた未使用のオブジェクトを見つけて削除すると、アップグレード時間が短縮されます。 Liferay バックアップからデータをインポートすると、貴重なテーブル情報が得られます。 データベース エンジンは、この情報をさまざまな方法で表示します。 たとえば、データベースのインポート ログは次のようになります。
Processing object type SCHEMA\_EXPORT/TABLE/TABLE\_DATA
imported "LIFERAY"."JOURNALARTICLE" 13.33 GB 126687 rows
imported "LIFERAY"."RESOURCEPERMISSION" 160.9 MB 1907698 rows
imported "LIFERAY"."PORTLETPREFERENCES" 78.13 MB 432285 rows
imported "LIFERAY"."LAYOUT" 52.05 MB 124507 rows
imported "LIFERAY"."ASSETENTRY" 29.11 MB 198809 rows
imported "LIFERAY"."MBMESSAGE" 24.80 MB 126185 rows
imported "LIFERAY"."PORTALPREFERENCES" 4.091 MB 62202 rows
imported "LIFERAY"."USER\_" 17.32 MB 62214 rows
...
サンプル データベースのインポートでは、いくつかの項目が目立ちます。
JOURNALARTICLEテーブルはデータベース サイズの 98% を占めます。- 多くの
RESOURCEPERMISSIONレコードがあります。 - 多くの
PORTLETPREFERENCESレコードがあります。
目立つテーブルに関連付けられた未使用のオブジェクトを検索し、Liferay の API (例: スクリプト コンソールを使用) を使用して不要なオブジェクトを削除します。
確認する価値のある一般的なオブジェクトタイプ
特定のオブジェクト タイプでは、未使用のオブジェクトがあるかどうか確認する必要があります。 確認する理由は以下のとおりです。
- それらを削除すると、関連する未使用のオブジェクトが削除用に解放されます。
- それらは保存する価値のないバージョンオブジェクトである可能性があります
次のオブジェクト タイプを確認します。
-
サイト: 不要なサイトを削除します。 サイトを削除すると、次のような関連オブジェクトも削除されます。
- レイアウト
- ポートレットの設定
- ファイルエントリ(ドキュメントライブラリオブジェクト)
- アセットエントリー
- タグ
- 語彙とカテゴリー
- Expandoフィールドとその値
ResourcePermissionオブジェクト- サイトに固有のその他のすべてのオブジェクト
-
インスタンス: 使用されていないインスタンスはまれですが、階層の最上位のオブジェクトであるため、そのオブジェクトを削除するとアップグレードを大幅に最適化できます。 インスタンスを削除すると、それに関連付けられている次のオブジェクトも削除されます。
- サイト(および関連するすべてのコンテンツ)
- ユーザー
- ロール
- 組織
- グローバル
ResourcePermissionオブジェクト
-
中間の Web コンテンツ バージョン: Liferay DXP は、変更 (翻訳を含む) 後に新しい Web コンテンツ バージョンを生成します。 必要のないバージョンを削除することを検討してください。 これにより、特に削除されたバージョンにそのバージョン固有のイメージ ファイルなどのオブジェクトがある場合、かなりのスペースが解放される可能性があります。 詳細については、「 例: 中間ジャーナル記事バージョンの削除」を参照してください。
-
ドキュメント バージョン: ジャーナル記事と同様に、中間ドキュメント バージョンが必要ない場合は削除します。 これにより、データベースとファイル システムの両方のスペースが節約されます。
-
レイアウト: レイアウトはサイト ページであり、ポートレットの設定、権限、アセット、評価などの他のエンティティに関連しているため、アップグレードのパフォーマンスに影響します。 不要なレイアウトを削除します。
-
ロール: 不要なロールを削除します。 これらを削除すると、関連する
ResourceBlockPermissionおよびResourcePermissionオブジェクトも削除されます。 -
ユーザー: 非アクティブで不要になったユーザーを削除します。
-
語彙: 使用されていない語彙を削除します。 語彙を削除すると、そのカテゴリも削除されることに注意してください。
-
孤立データ: 何にも接続されていない未使用のオブジェクトをチェックします。 次にいくつかの例を示します。
DLFileEntriesにはファイル システム データがありません。- 存在しないロール、レイアウト、ユーザー、ポートレットインスタンスなどに関連付けられている
ResourcePermissionオブジェクト。 PortletPreference存在しなくなったポートレットまたはレイアウトに関連付けられたオブジェクト。 これは、多くの埋め込みポートレットがある環境では一般的です。 これらのポートレット インスタンスはライフサイクルが異なり、ポートレットがテンプレートから削除されても削除されません。
中間オブジェクト バージョンを削除する例については、「 例: 中間ジャーナル記事バージョンの削除」を参照してください。
ステージングされた変更を公開し、ステージングをオフにする
ローカル/リモート ステージングが有効になっていて、ステージングされたサイトにコンテンツまたはデータが保存されている場合は、ライブ サイトに 公開 します。 この手順をスキップすると、システムは最後の公開日以降に変更されたコンテンツを認識しないため、アップグレード後に完全な公開を実行する (または変更を手動で公開する) 必要があります。 最終的な公開が完了したら、アップグレードする前にステージングをオフにします。
次に、プルーニングされたデータベースを使用してインスタンスをテストします。
プルーニングされたデータベースのコピーを使用してテストする
削除したオブジェクトに関連する問題を見つけて解決します。 オブジェクトが誤って削除された場合、または他のコンテンツに影響する場合、これは重要な手順です。 問題を解決できない場合は、いつでも運用データベースの新しいコピーのプルーニングを再開できます。