私はMySQLのパーティショニングが初めてなので、どんな例でも大歓迎です。
複数の MyISAM テーブルに分散されたデータの一種のエージング メカニズムを作成しようとしています。
私の質問には、実際にはいくつかのサブ質問が含まれます。
関連するテーブルは次のとおりです。
- 最初のテーブルには、入力頻度の高い生データが含まれています (各レコードの隣には、自動インクリメントされた ID があります)。
- 2 番目のテーブルには、処理された結果が含まれます。生データ レコードごとに結果レコードがあります (結果レコードには、生データ レコードの自動インクリメント フィールドのソース ID レコードが含まれます)。
質問:
- 生データ テーブルと結果データ テーブルを同様に分割して、どちらも 1 つのパーティションに 10 週間のデータのみが含まれるようにする必要があります (各生データ レコードには unixtimestamp フィールドが含まれます)。 2 つのそのようなテーブルの小さな例ですか?.
- その場で 10 週間の制約を変更できるようにしたい。
- 現在のパーティションがいっぱいになるか、新しいパーティションが作成されるたびに、以前 (10 週間前) のパーティションが自動的に削除されるようにします。
- 自動インクリメント ID の整数をオーバーフローさせたくないのですが、ID がパーティションでのみ一意であることを理解している限り、間違っていなければ、自動インクリメント ID は次のパーティションでゼロから始まりますか? しかし、前のパーティションがまだ存在する場合、2 つの重複した ID があるのでしょうか。結果レコードを提示するときに、最後の ID のみを参照する方法を知るにはどうすればよいでしょうか?
- 複数の挿入の代わりに LOAD DATA INTO... を使用して生データをロードしたいのですが、MySQL のパーティショニング機能は影響を受けますか?
最後の質問ですが、エージング メカニズムを実装するための他のアプローチを提案していただけますか (私は、1 日あたり約 1 GB または生データを処理し、結果を MySQL に保存する Java 実装製品を作成しています)。