私はワークフローのようなシステムに取り組んでいます。1 つのタスク テーブルとステータス フィールドがあります。status の値は、New、ready、processing、error、abort、done のいずれかです。
タスクステータスの値を変更するために、さまざまな状況に基づいてトリガーされる約7つのプロセスがあります。ほとんどの場合、各プロセスは独自のデータ セットで動作し、毎回最大 5000 レコードしか処理しません。しかし、データが約 200 万レコードに達すると、まだデッドロックが発生します。SQL プロファイラで確認すると、関連するページ リソースのように見えます。私はSQLサーバーのパフォーマンスチューニングが苦手で、よく理解していません。
非アクティブなタスクは毎日アーカイブされるため、1,000 万件程度のレコードをサポートするようにテーブルを再設計することを考えています。
いくつかの選択肢があります:
- ステータスに基づいて分割テーブルを作成します。
- ステータスに基づいて静的データとサポートされているテーブルを含むマスター テーブルを作成する
この種の状況に適した方法はありますか?
ありがとう!