本日、次の 2 つのアナウンスがありました。
- Released: Microsoft.Data.SqlClient 3.0 Preview 1
- Introducing Configurable Retry Logic in Microsoft.Data.SqlClient v3.0.0-Preview1
Microsoft.Data.SqlClient 3.0 では、ユーザーが設定可能な再試行ロジックを利用することができるようになるようです。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
本日、次の 2 つのアナウンスがありました。
Microsoft.Data.SqlClient 3.0 では、ユーザーが設定可能な再試行ロジックを利用することができるようになるようです。
非クラスター化インデックスのキー項目を変更した場合、どのようなオーバーヘッドが発生するかについてまとめておきたいと思います。
SQL Server には、cost threshold for parallelism という、並列プランを使用するかの閾値のオプションがあります。
クエリのコスト プランが cost threshold for parallelism の現在の値より小さくても、並列プランが選択されることがあります。 並列プランまたは直列プランのどちらを使用するかが、最適化プロセスの初期段階で算出されたコストの推定値に基づいて決定された場合に、このようなことが起こります。 詳細については、「クエリ処理アーキテクチャ ガイド」をご覧ください。
と記載がある通り、この設定よりコストが小さくても並列プランが選択されることがあるようですが、並列プランを使用するかどうかを判断する要因の一つとなります。
本投稿では、並列のコストについてみていきたいと思います。
並列クエリについては 並列クエリ処理 が公式のドキュメントで情報がまとまっているものになるかと。
SQL Server / SQL Database で CPU 使用率が高い場合、CPU を使用しているクエリの特定を行い、CPU 負荷を低減させるという作業を行うことがあるかと思います。
SQL Server / SQL Database で CPU 使用率が高い状態とは、そもそもとしてどのような状態を指しているのでしょうか??
今回は情報を取得しやすい SQL Server で情報を取得していますが、基本的な考え方は、SQL Databse でも同様です。
また、クエリによる CPU の利用を考える際には、スケジューラーやスレッドの意識も重要となりますので、本投稿についてはそれらについても触れておきたいと思います。
Ignite 全体のアナウンスについては以下の情報から確認することができます。
Data and AI に特化したアナウンスはこちらから。
SQL Server 関連のアナウンスはこちらから。
Ignite 直前に先月の更新情報をキャッチアップ。
SQL Server では実行プランを表示した際に各演算子 (イテレーター) に下図のようなコストラベルが出力されます。
クエリのチューニングを実施する際には、このコストラベルの数値が高い操作についての改善を行うことが多いかと思いますが、コストラベルだけでは判断できない情報もあります。
SQL Server では、「待機事象 (Wait Stats)」の情報を確認することで、インスタンスで同時実行性を低下させる問題が発生しているかの確認をするという分析手法があります。
SQL Server でクエリ実行の処理 (タスク) を実行する際には、タスクは次の状態を遷移しながら処理が行われます。
この 3 種類の状態の中で「待機状態」に入っている時間が少なければ、他の処理により同実行性を低下させることなく、処理を実行することができていることになります。