SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘SQL Database’ Category

「実行中のクエリ」で実行時のパラメーターを取得する

without comments

SQL Server でパラメーター化クエリ (パラメータークエリ) を使用した場合、「クエリコンパイル時のパラメーター」を意識することがあるかと思います。(パラメーター化クエリだけでなく、ストアドプロシージャも同様ですが)

これは、「パラメーター スニッフィング」という、クエリのコンパイルが発生した際に、コンパイル時に使用されたクエリのパラメーターを傍受し、オプティマイザーがクエリの最適化を行うためです。

次のクエリを実行したタイミングでコンパイルが発生したとします。

sp_executesql 
N'SELECT * FROM LINEITEM WHERE L_ORDERKEY >= @orderkey', 
N'@orderkey int',
@orderkey = 300000000

 

この場合、パラメーター スニッフィングにより、「@orderkey = 300000000」というパラメーターによって最適化されたクエリとしてコンパイルが行われます。。

今回は上記のクエリのハッシュ値がわかっているため、キャッシュされているクエリの情報を取得してみます。

SELECT 
    qp.query_plan
FROM 
    sys.dm_exec_query_stats AS qs
    OUTER APPLY sys.dm_exec_query_plan(plan_handle) AS qp
WHERE 
    query_hash = 0x3B2744F6B4DC1A74

 

キャッシュされているクエリの実行プランには、「パラメーター リスト」という情報が含まれています。

image

実行プランの XML で確認した場合には、次のような情報です。

            <parameterlist>
              <columnreference Column="@orderkey" ParameterDataType="int" ParameterCompiledValue="(300000000)"></columnreference>
            </parameterlist>

 

この情報から、キャッシュされているパラメーター化クエリの実行プランは、どのようなパラメーターによって、生成されたのかを確認することができます。

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 6th, 2020 at 11:06 pm

「新しい仮想クラスターで作成された」Azure SQL Managed Instance でグローバル VNET ピアリングがサポートされました

without comments

Ingite 2020 でアナウンスが行われましたが、「新しく作成した」Azure SQL Managed Instance (MI) に関してはグローバル VNET ピアリングがサポートされるようになります。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 27th, 2020 at 1:45 pm

Posted in SQL Database

Tagged with

Ignite 2020 の SQL Server / SQL Database のセッション

without comments

Ignite 2020 で発表された SQL Server / SQL Database 関連の更新情報 はアナウンスのあった情報ですが、セッションについても確認できた内容から、少しずつまとめていこうかと。

Azure SQL Family の更新情報については、Azure SQL: What to use when and updates from the Product Group のセッションでまとめられており、最新のアップデートについて紹介が行われています。

imageimage
imageimage

 

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 24th, 2020 at 2:13 pm

Ignite 2020 で発表された SQL Server / SQL Database 関連の更新情報

without comments

Ignite 2020 に合わせて SQL Server / SQL Database 関連の情報がアップデートされていますのでまとめて。

公式の情報は Microsoft Ignite 2020 Book of News から確認でき、日本語版 も公開されています。

 

データ関連の全体的なアナウンスについては、次の記事とセッションを見ると良いかと思います。

  • What’s new in Azure SQL Managed Instance at Ignite 2020
  • Azure SQL: What to use when and updates from the Product Group
  • Azure Synapse Analytics: Powering data exploration and data warehousing with new features
  • Making sense of Azure and Azure Arc deployment options for SQL Server
  • Microsoft Ignite Announcements 2020
  •  

    Making sense of Azure and Azure Arc deployment options for SQL Server で公開されていますが、Azure 上で動作する SQL Server ベースの環境もだいぶ増えましたね。

     

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    9月 23rd, 2020 at 12:17 am

    検証目的で UPDATE STATISTICS で統計情報を手動で書き換える (update_stats_stream_option)

    without comments

    本投稿の内容を使用すると、クエリの実行プランに大きく影響を与えますので、検証目的でクエリの実行プランを変更する場合以外、本投稿の内容は使用しないでください。

    ドキュメントにも「サポートされていない」ことが明記されており、本番環境で実行して、クエリの実行に大きく影響を与えても一切の責任は取りません。
    クエリの実行に影響があると、本業務に影響を与える環境に対して実施する場合は自己責任で実施してください。

    ということで、検証以外では、本投稿の内容は使用しないでください。
    この投稿の内容は、クエリの実行プランが大きく変わり、性能にダイレクトに影響を与えます。

    本来の目的はクローンデータベースを作成する際に、検証目的で統計情報の復元を行うためのものですので、統計情報の固定に使おうとすると、予期せぬ動作を引き起こす可能性が十分にあります。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    9月 9th, 2020 at 9:06 pm

    非クラスター化インデックス作成時の処理状況 (進行状況) を確認する

    without comments

    以前書いた、SQL Server のクエリプロファイリングの活用 の応用ではありますが、この方法は、非クラスター化インデックスを新規に作成するときにも活用することができます。

    Enterprise Edition であれば、オンラインのインデックス操作でインデックスを作成することもできますが、データ量が大きい場合、実際のインデックス作成の状況がどこまで進んでいるのかを確認したいということはあると思います。(クエリの処理状況がわかると、メンテナンス作業を実行している最中の心理的安定性にもつながりますので)

    クエリ プロファイリング インフラストラクチャ の機能を使用しており、SQL Server 2016 SP1 / Azure SQL Database であれば、オーバーヘッドを抑えて使用することができるかと。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    9月 6th, 2020 at 10:23 pm

    2020/8/8~8/23 の SQL Server / SQL Database 関連の更新情報

    without comments

    定期的な更新とか、僕には無理だったんだ…。
    ということで 2 週間分をまとめておこうかと。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    8月 24th, 2020 at 9:19 am