一時テーブルにデータをロードするときに最小限のログを取得します


10

データロードパフォーマンスガイドを読んでも、最小限のログを取得するためにクラスター化インデックスで定義された空の一時テーブルにTABLOCKテーブルヒントを追加する必要があるかどうかはまだわかりません。

一時テーブルは、SIMPLEリカバリモードで動作するTempDBで作成されるのは明らかなので、最小限のロギングの完璧な候補だと思いましたが、確認するための通路が見つかりません。

一時テーブルは最小限のロギングの候補です。そうであれば、永続テーブルに推奨されるTABLOCKヒントを追加する価値はありますか?

回答:


18

TABLOCK最小限のログを取得するためにクラスター化インデックスで定義された空の一時テーブルにテーブルヒントを追加する必要があるかどうかは不明です。

いいえ。ローカル一時テーブル(#temp)は作成セッション専用なので、テーブルロックヒントは必要ありません。で作成されたグローバル一時テーブル(##temp)または通常テーブル(dbo.temp)にはtempdb、複数のセッションからアクセスできるため、テーブルロックヒントが必要です。

最小限のロギング最適化が完全に適用されていない場合でも、作成されたテーブルは、情報tempdbをログに記録する必要がないなど、他の最適化の恩恵を受けますREDO。ドキュメント化されていないを使用して、行またはページがログに記録されているかどうかをテストできますsys.fn_dblog。通常のロギングでは、などの行にログが記録されますLOP_INSERT_ROWS


SQL Server 2016 TABLOCKINSERT...SELECTクエリを使用して並列実行するには、ローカルの一時テーブルに追加する必要があることに注意してください。マイクロソフトサポート技術情報の記事を参照してください。

SQL Server 2016でINSERT .. SELECT操作を実行するとパフォーマンスが低下する

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.