メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

Windows 上の Microsoft SQL Server 2016 または SQL Server 2017 では、次の条件下でパフォーマンスが低下する可能性があります。

  • 一時テーブルに対して複数の INSERTSELECT 操作を同時に実行する場合。

  • sys.dm_os_waiting_tasksクエリを実行する場合。 このような場合、 resource_description 列には、複数の要求のページ空き領域 (PFS) ページでの待機が表示されます。

原因

INSERTSELECT 操作の INSERT 並列処理は、windows SQL Server 2016 または SQL Server 2017 で導入されました。 ローカル一時テーブルへの INSERT (#プレフィックスで識別されたもの、および ## プレフィックスによって識別されるグローバル一時テーブルではなく) は、非一時テーブルに必要な TABLOCK ヒントを指定することなく、並列処理が自動的に有効になりました。 

通常、INSERT 並列処理を使用するとクエリのパフォーマンスが向上しますが、同時一時テーブル INSERTSELECT 操作が多数ある場合、PFS ページに対して競合が大きくなる可能性があります。 場合によっては、パフォーマンスが全体的に低下する可能性があります。

解決方法

この問題は、SQL Server 2016 Service Pack 1で最初に修正されています。 2016 SP1 SQL Server適用した後、INSERT で並列 INSERT..ローカル一時テーブルへの SELECT は既定で無効になっており、PFS ページでの競合が減り、同時ワークロードの全体的なパフォーマンスが向上します。 ローカル一時テーブルへの並列 INSERT が必要な場合は、ローカル一時テーブルへの挿入中に TABLOCK ヒントを使用する必要があります。

回避策のセクションで説明されているトレース フラグ 9495 を有効にしている場合は、トレース フラグ 9495 が TABLOCK ヒントに関係なく並列挿入を無効にするため、SQL Server 2016 SP1 を適用した後でトレース フラグを無効にして削除することをお勧めします。

累積的な更新プログラムの情報

この問題は、SQL Server 2016 の次の累積的な更新プログラムで修正されました。

SQL Serverの累積的な更新プログラムについて

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×