私はSQL Serverのパーティション分割を扱ったことがありませんが、現在、ボリュームがおそらくそれを保証するデータベースの設計に直面しています。システムはクーポン用です。クーポンは定期的に発行され、通常は6週間ごとに発行されますが、特別イベントなどの臨時の発行も行われます。1,500万人の顧客がおり、各発行イベントに対して、すべての顧客が6種類の異なるクーポンタイプを受け取り、合計9000万のクーポンインスタンスを提供します。通常、クーポンの有効期間は6週間ですが、クーポンインスタンスの償還データを追跡して6か月間維持する必要があります。無効なクーポンの引き換えリクエストは、POSによって検証されるため、データベースに到達しません。
6か月間で、クーポンインスタンステーブルには最大3億6,000万行、リデンプションテーブルには最大7,200万行(最大20%の償還率を想定)を格納する必要があります。これらの数値は単一のパーティションには大きすぎると感じますか?
私の質問は-パーティションキーとして何を使うのですか?明らかな候補の1つは、発行イベントによるもので、約6つのパーティションを提供します。しかし、それでも、パーティションサイズが大きすぎて最適なパフォーマンスを実現できないと思いますか?たとえば、発行イベント+カスタマーIDの最後の桁など、2つのキーでパーティション化することはできますか?したがって、ロジックは次のようになります。
If issuance event = 1 and last digit of customer id < 5 then
Store in partition 1
Else if issuance event = 1 and last digit of customer id >4 then
Store in partition 2
Else if issuance event =2 and last digit of customer id <5 then
Store in partition 3
Else if issuance event =2 and last digit of customer id >4 then
Store in partition 4
Etc...
また、必要なデータベースサーバーの仕様もわかりません。16GBと8CPUで十分でしょうか?DBは、0.5秒未満でバーコード数値にキー入力されたクーポンインスタンステーブルから結果を返すことができる必要があります。検証(選択)と引き換え(挿入)の予期されるトランザクション要求は、1分あたり約3,500でピークになると予想されます。
SQL Server 2008r2 64ビットdbサーバーは、高性能で大容量のSANにアクセスできる非常に強力なホストからVMとしてプロビジョニングされます。
同様のボリュームを管理するためにSQL Serverソリューションを導入した人からのアドバイスにとても感謝しています。
よろしく
ロブ。