どのデータが最新であるかを示すために使用される日時スタンプで分割しようとしています。
これは、パーティション間でデータを頻繁に移動する場合に発生します。
- これにより、どのような問題が発生しますか?
- 時間の経過とともに速度に影響しますか?
- 行をあるパーティションから別のパーティションに変更することは、単にパーティション インデックスを更新するだけなのでしょうか (したがって、大したことではありません)。
どうも
どのデータが最新であるかを示すために使用される日時スタンプで分割しようとしています。
これは、パーティション間でデータを頻繁に移動する場合に発生します。
どうも
パーティショニングにより、DB を表す物理ファイルを複数のファイルに分割できます。レコードを更新し、パーティショニング ルールの基になっている 1 つ以上のフィールドを変更すると、DB は、更新されたレコードを、新しいパーティション値が必要とするファイルに物理的に移動することを強制されます。
そのため、タイムスタンプを使用することはお勧めできません。「関連する」レコードをまとめるために多くの余分なオーバーヘッドが必要になるからです。
これは、時間の経過とともに速度に影響します。これは、これらのレコードがシャッフルされるときに DB ファイルが断片化されることに加えて、追加の I/O オーバーヘッド、新しい場所を反映するためのインデックスの更新などが発生するためです...
たとえば、パーティション計算用のフィールドは基本的に定数として扱われ、そのままにしておく必要があります。更新ができないと言っているわけではありませんが、頻繁に更新するべきではありません。