質問: おはようございます。 私は15秒ごとに1行を実行して挿入するC#で書いているサービスを持っています。この間隔はユーザー定義可能ですが、現時点では15秒が目標間隔です。 私はこの記事を読んでいます: SqlBulkCopyは単一のレコードですか?これは、単一行の一括挿入を実行する場合に通常の挿入を使用することによるスループットの利点を明確に説明しています。しかし、それはまた、通常の挿入物が一括挿入物よりもCPU上で重いことを言い(または示唆している)。 私が書いているサービスはサポートサービスなので、人為的に一定の間隔で人工的に1に制限されているので、上記の含意がSqlBulkCopyを通常の挿入物よりも使用することが正当なものかどうかは疑問です。明らかに、私のサービスはできるだけ軽量にしたい。
回答: あなたの記事の答えは、SqlBulkCopyが4.4倍遅く、単純なSQLコマンドのCPUを2倍にすると述べています。あなたは答えを誤って読んだ(または私がした)、それはSqlBulkCopyは、より意味のある通常の挿入よりもCPU上に重いと述べている。 答えは簡単です:もしあなたが100%確信しているならば、1つのレコードだけが挿入される必要があるならば、SQLコマンドに固執してください。 私のライブラリでさえ、 C#Bulk Operationsは、SqlBulkCopyが非常に重すぎるため、通常10行の特定の行に達するまでSqlBulkCopyを使用しません。