ThingWorx モデルとデータの最良事例 > データ管理 > ランタイムデータのパーティション分割 > PostgreSQL での value_stream テーブルのパーティション分割
PostgreSQL での value_stream テーブルのパーティション分割
value_stream テーブルに大量のデータがあると、それによって生じるテーブルスキャンにより、時間ベースのクエリーやパージ操作に膨大な時間がかかり、サーバー全体の負荷が増大する可能性があります。週または月ごとにパーティションを作成し、drop-partition 操作と一致させることで、こうした現在のボトルネックがいくらか合理化されます。
大規模なデータ取得の場合は、partition_value_stream_by_range_setting コマンドラインを使用して value_stream テーブルをパーティション分割することで、パーティション分割の開始または終了のタイミングやパーティション分割の間隔など、パーティション分割の範囲を容易に制御できます。これには、古いデータの再パーティション分割と、開始時間、終了時間、または時間間隔の変更が含まれます。
* 
リカバリのために、パーティション分割プロセスを開始する前に、データベースを複製またはバックアップします。
partition_value_stream_by_range_setting コマンドラインを使用すると、以下のことがサポートされます。
1. 最小のダウンタイムで既存のテーブルまたはパーティションに新しいパーティションを追加できます。
2. 特定の時刻からの古いデータを再度パーティション分割します。これには時間がかかる場合があります。
3. 別の範囲設定で再パーティション分割します。
4. データがどのパーティションにも属していない場合、DEFAULT パーティションを使用して情報を保存します。
value_stream テーブルをパーティション分割するには、定期的なパーティションを作成します。データベーススケジューラツールを使用して、今後取得されるすべてのデータが次のパーティションに入るようにします。
partition_value_stream_by_range_setting コマンドラインには以下のパラメータがあります。
パラメータ名
説明
デフォルト値
コメント
host
データベースホスト
必須
port
データベースポート
必須
database
value_stream テーブルが存在するデータベース名
必須
username
データベースのユーザー
必須
password
データベースのパスワード
必須
partition_start_date
* 
提供されたデータが過去のものである場合、パーティション分割の必要があるデータの量によってはダウンタイムが発生する可能性があります。まずテスト環境でこれを実行し、潜在的なダウンタイムを分析することをお勧めします。partition_start_date を空のままにしておくと、ダウンタイムは発生しません。
パーティション作成の開始時点を定義します。開始時点は過去の場合も、未来の場合もあります。
value_stream テーブルの「time」列の最後の値。データがない場合、開始日は現在になります。
オプション
可能なフォーマット:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.MS
partition_end_date
パーティション作成の停止時点を定義します。
必須
可能なフォーマット:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.MS
は将来でなければならず、少なくとも「time」列の最後の値に間隔を加えた値より大きくなければなりません。データがない場合は、現在に間隔を加えた値より大きい値を指定する必要があります。
partition_interval
各パーティションの必須の間隔
可能なフォーマット:
1h または hours
1d または 1day
1 month
1y または 1year
future_data_exists
オプション
no
可能な値:
yes または no
yes (オプション) に設定した場合、スクリプトは将来のデータのパーティション分割をサポートします
コマンドラインの実行後、value_stream テーブルはパラメータに従ってパーティション分割され、データは正しいパーティションにプッシュされます。
partition_value_stream_by_range_setting コマンドラインを使用するには、以下の操作を行います。
1. 「PTC ソフトウェアのダウンロード」サイトに移動し、ThingWorx PostgreSQL フォルダに移動して、partition_value_stream_by_range_setting.sh スクリプトをダウンロードします。
2. ThingWorx データベースに接続しているサーバーにスクリプトをコピーします。
3. コマンドラインを開き、上記のパラメータを使用して必要に応じてコマンドを実行します。
例: /partition_value_stream_by_range_setting.sh -host localhost -port 5432 -database thingworx -username DBA -password password -partition_start_date '2024-06-17 00:00:00.000' -partition_end_date '2025-06-17 00:00:00.000' -partition_interval '1 months'
* 
特定のパラメータを繰り返し指定することを避けるには、スクリプトを編集して、パラメータ DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD を設定します。
4. パーティションを維持します。たとえば、将来のパーティションを追加したり、古いパーティションをアーカイブまたは削除したりするためのスケジューラを作成します。ただし、パーティションの数が多いとクエリープランニング時間が大幅に増加する可能性があるため、何千ものパーティションを使用することは避けてください。
これは役に立ちましたか?