約 150 万の入力値で発生する興味深いパフォーマンスの変化に気付きました。なぜこれが起こっているのか、誰かが私に良い説明を与えることができますか?
表はとてもシンプルです。(bigint、bigint、bigint、bool、varbinary(max)) で構成されています。最初の 3 つの bigint に pk clusered インデックスがあります。データ varbinary(max) としてブール値「true」のみを挿入します。
その時点から、パフォーマンスはかなり一定しているように見えます。
凡例: Y (ミリ秒単位の時間) | X (10K を挿入)
また、グラフに一定の比較的小さな (時には非常に大きな) スパイクがあることにも興味があります。
スパイク前の実際の実行計画。
凡例:
挿入先のテーブル: TSMDataTable
1. BigInt DataNodeID - fk
2. BigInt TS - メイン
タイムスタンプ 3. BigInt CTS - 変更タイムスタンプ
4. ビット: ICT - 最後に挿入された値の記録を保持 (読み取りパフォーマンスが向上)
5. データ:データ
ブール値 現在のタイムスタンプを保持
環境
ローカルです。
リソースを共有していません。
これは固定サイズのデータベースです (拡張しないように十分です)。
(コンピューター、4 コア、8GB、7200rps、Win 7)。
(SQL Server 2008 R2 DC、プロセッサ アフィニティ (コア 1、2)、3GB、)