SE の雑記

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

Archive for the ‘SQL Database’ tag

SQL Server / Azure SQL Database の last-page insert による PAGELATCH_EX の競合について

without comments

調べ物をしていたところ、SQL Server で最終ページの挿入 PAGELATCH_EX 競合を解決する方法 (How to resolve last-page insert PAGELATCH_EX contention in SQL Server) というドキュメントが公開されていることに気づいたので、少しまとめておこうかと思います。

本投稿は、データベースを遅くするための8つの方法 で解説されている、「シーケンスナンバーに PK を使用する」の Right Growing Index に関してのSQL Server での基本的な考え方になります。

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 19th, 2020 at 2:13 pm

SQL Server / Azure SQL Database で非効率な SELECT による Page writes/sec の増加について

without comments

SQL Server / Azure SQL Database (SQL DB) で、データベースのデータファイル (mdf/ndf) に対しての書き込みの発生状況を確認するための方法として「SQL Server: Buffer Manager オブジェクト」の「Page writes/sec」の情報を調べるという手法があります。

Page writes/sec の説明は次のようになっています。

物理的なデータベース ページ書き込みが実行される 1 秒あたりの回数を示します。

 

SQL Server では、物理的なデータベース ページへの書き込みが発生する一般的な要因としては、次のような内容があります。

  • チェックポイントの発生による、ダーティーページのデータファイルへの書き込み
  • Checkpoint pages/sec / Background writer pages/sec の情報と組み合わせての確認
  • レイジー ライターによる、ダーティーページのデータファイルへの書き込み
    • Lazy writes/sec の情報と組み合わせて確認
  • クエリストアの情報をデータファイルに永続化するための書き込み
  • クエリストアは少し例外的なパターンですが、基本的には、メモリ上では変更されているが、データファイルには書き込みが行われていないデータを書き込み、ディスクに永続化する際に Page writes/sec が発生します。

    ただし、特定の状況下では、非効率な SELECT によっても Page writes/sec が発生するケースがあります。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    11月 15th, 2020 at 11:16 pm

    PASS VIRTUAL SUMMIT 2020 : Day 1 Keynote の発表内容について

    without comments

    2020/11/9~13 の期間で開催されていました。

    今年は全セッションがオンライン化された Virtual Summit として開催されており、Keynote についても、開催時間に合わせての事前録画の公開となっていました。

    仕事の関係でリアルタイムで参加はできていないのですが、録画で内容を確認することができましたので、発表内容をまとめておきたいと思います。

    2020/9 に Ignite 2020 があったばかりですので、その時のアナウンスと重複しているものが多いですね。

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    11月 14th, 2020 at 8:05 pm

    2020/10 の SQL Server / SQL Database 関連の更新情報

    without comments

    来週から PASS Summit 2020 が開催されますが、その前に、先月の更新情報を確認しておかないとなと思いチェックしてみましたとさ。

    更新情報のまとめは、毎週は無理なので月次でやろうと思いました(遠い目)

    Read the rest of this entry »

    Written by Masayuki.Ozawa

    11月 4th, 2020 at 11:30 am

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

    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