SQL Server よく聞く設定とその効果
                  小澤 真之 (@Masayuki_Ozawa)
           http://engineermemo.wordpress.com
自己紹介
       SQLTO の運営スタッフ
       現在、フリーランスのエンジニアとして活動中
           お仕事がありましたらお声がけいただけると生活に潤いができて嬉しいです


       SE の雑記というブログ        (http://engineermemo.wordpress.com)   を公開しています。
           SQL Server を中心とした Microsoft 製品の検証結果を誤字 / 脱字を交えなが
            ら、気ままに公開しています

       SNS のアカウント
           Twitter : @Masayuki_Ozawa
           Facebook :masayuki.ozawa

    2                  SQLTO 第 5 回勉強会 http://www.sqlto.net           2012/08/04
本日の Agenda

ファイルの瞬時初期化

メモリ内のページのロック

データファイルの分割
3     SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
本日の Agenda

ファイルの瞬時初期化

メモリ内のページのロック

データファイルの分割
4     SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
ファイルの瞬時初期化




5   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
どこで設定する??
       グループポリシー (またはローカルセキュリティポリシー) で設定
           SQL Server のサービスアカウントに [ボリュームの保守タスクを実行] を付与




                                               デフォルトでは Administrators
                                               グループのみが設定されている
                                           (Local System は権限が付与されている)
    6               SQLTO 第 5 回勉強会 http://www.sqlto.net     2012/08/04
設定の確認
        Process Explorer で [sqlservr.exe] の情報を表示して、
         [SeManageVolumePrivilege] が有効になっているかを確認
            データベース ファイルの初期化
                http://msdn.microsoft.com/ja-jp/library/ms175935.aspx




Process Explorer : http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx
     7                       SQLTO 第 5 回勉強会 http://www.sqlto.net                   2012/08/04
設定をするとどのような効果が??
       ファイルの瞬時初期化 (Instant File Initialization) が使用できるようになる

       設定をした場合、データファイルのサイズ変更時のゼロ埋め (Zeroing) が発生しな
        くなるため瞬時にサイズの変更が可能となる
           設定はデータファイル (mdf / ndf)にのみ有効
           ログファイル (ldf) は瞬時初期化を有効にしてもゼロ埋めが発生する


       効果が見れる操作
           データベースの作成
           データファイルのサイズ変更 (手動拡張 / 自動拡張)
           データベースのリストア


    8               SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
ゼロ埋め
設定なし                                     設定あり
    データファイル                                データファイル
    00000000000000000000000
    ABCDABCDABCDABCDABCDABCDA                ABCDABCDABCDABCDABCDABCDA
    00000000000000000000000
    BCDABCDABCDABCDABCDABCDAB                BCDABCDABCDABCDABCDABCDAB
    CDABCDABCDABCDABCDABCDABC
    00000000000000000000000                  CDABCDABCDABCDABCDABCDABC
    DABCDABCDABCDABCDABCDABCD
    00000000000000000000000                  DABCDABCDABCDABCDABCDABCD


    ログファイル                                 ログファイル
00000000000000000000000
ABCDABCDABCDABCDABCDABCDA                    00000000000000000000000
                                             ABCDABCDABCDABCDABCDABCDA
00000000000000000000000
BCDABCDABCDABCDABCDABCDAB                    00000000000000000000000
                                             BCDABCDABCDABCDABCDABCDAB
00000000000000000000000
CDABCDABCDABCDABCDABCDABC                    CDABCDABCDABCDABCDABCDABC
                                             00000000000000000000000
DABCDABCDABCDABCDABCDABCD                    DABCDABCDABCDABCDABCDABCD
                                             00000000000000000000000
00000000000000000000000


9                    SQLTO 第 5 回勉強会 http://www.sqlto.net            2012/08/04
データベースリストアと瞬時初期化の影響
効果が見れる操作
 • データベースの作成
 • データファイルのサイズ変更
                           ログファイルのゼロ埋め
 • データベースのリストア
                                                         瞬時初期化で
                                                         スキップできる
                          データファイルのゼロ埋め



                               リストアの実施



                           ロールフォワードの実施

 10                SQLTO 第 5 回勉強会 http://www.sqlto.net        2012/08/04
ゼロ埋めは何のためにしている??
       主にセキュリティ面を考慮しての動作
           削除したはずの内容 (データファイルを格納していたディスク内に以前存在し
            ていたデータ) を公開されることを防ぐ
           Books Online (BOL) のデータベース ファイルの初期化の内容
               “削除されたディスクの内容は、新しいデータがファイルに書き込まれるときにのみ上書き
                されるため、許可されていないプリンシパルがこの削除された内容にアクセスする可能性
                があります。”




WinHex : http://www.x-ways.net/winhex/
       11                  SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
設定有無で SQL Server の起動は早くなる??
    temdb は SQL Server の起動のたびに初期化がされる
        瞬時初期化を設定することによる起動への影響は??

    SQL Server 2008 R2 SP1 / SQL Server 2012 CU2 で検証してみたところ、
     tempdb のデータファイルが再作成されるのは、[データファイルが存在しなかった場合]
     のようで、既にファイルが存在している場合はゼロ埋めを伴うファイルの新規作成は実施さ
     れないようである
        ただし、ファイルの新規作成がされないだけで tempdb は起動のたびに初期化されますので
         混同しないようにお願いします

    リストアも同様だが、データファイルが既に存在しているかどうかで瞬時初期化の処理
     に影響がでてくる
        データファイルのサイズを大きくするかどうかも影響しているようですのでリストア時間の計測をする
         際には注意が必要


    12            SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
ファイルの瞬時初期化関係の TF
     ファイルの瞬時初期化関係のトレースフラグ (TF)
トレースフラグ                効果
-T1806                 瞬時初期化を無効化
-T3004                 ゼロ埋め発生時の情報をログ (ERRORLOG) に出力
-T3605

     ゼロ埋めのログ (ERRORLOG)
Zeroing G:¥SQL2012¥TEST_log.ldf from page 0 to 6400 (0x0 to 0x3200000)
Zeroing E:¥SQL2012¥TEST.mdf from page 0 to 25600 (0x0 to 0xc800000)
Zeroing completed on G:¥SQL2012¥TEST_log.ldf
Zeroing completed on E:¥SQL2012¥TEST.mdf
Starting up database 'TEST'.
FixupLogTail(progress) zeroing G:¥SQL2012¥TEST_log.ldf from 0x5000 to 0x6000.
Zeroing G:¥SQL2012¥TEST_log.ldf from page 3 to 483 (0x6000 to 0x3c6000)
Zeroing completed on G:¥SQL2012¥TEST_log.ldf

   13                      SQLTO 第 5 回勉強会 http://www.sqlto.net                  2012/08/04
トレースフラグの設定




                   SQL Server 構成マネージャーの起動時の
                     パラメーターで –T<数値> で設定




14   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
デモ環境
    ThinkPad X201
        CPU : Core i3
        HD : 500GB
        Memory : 8GB
        OS : Windows Server 2012 RC (Release Candidate)
    ゲスト OS (Hyper-V 3.0)
        CPU : 2 コア
        Memory : 4GB
        OS : Windows Server 2012 RC
        RDBMS : SQL Server 2012 SP1 CTP3
    Minimum version requirements when you install SQL Server on Windows Server 2012 Release Candidate or on
     Windows 8 Release Preview
        http://support.microsoft.com/kb/2681562


    15                        SQLTO 第 5 回勉強会 http://www.sqlto.net                               2012/08/04
Demo
             ゼロ埋め発生時のログ出力
     ファイルの瞬時初期化の有無による処理の違い



16   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
参考 : 瞬時初期化についての技術情報
   データベース ファイルの初期化
       http://msdn.microsoft.com/ja-jp/library/ms175935.aspx
   How and Why to Enable Instant File Initialization
       http://blogs.msdn.com/b/sql_pfe_blog/archive/2009/12
        /23/how-and-why-to-enable-instant-file-
        initialization.aspx
   How It Works: What is Restore/Backup Doing?
       http://blogs.msdn.com/b/psssql/archive/2008/01/23/ho
        w-it-works-what-is-restore-backup-doing.aspx

17                SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
本日の Agenda

ファイルの瞬時初期化

メモリ内のページのロック

データファイルの分割
18    SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
メモリ内のページのロック
        (Lock Page in Memory)




19   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
どこで設定する??
    グループポリシー (またはローカルセキュリティポリシー) で設定
        SQL Server のサービスアカウントに [メモリ内のページのロック] を付与




                                         デフォルトでは設定されていない
                                      (Local System は権限が付与されている)



    20           SQLTO 第 5 回勉強会 http://www.sqlto.net     2012/08/04
参考 : バージョンによる注意点
    SQL Server 2008 R2 までの Standard Edition では以下の技術情報の対応が
     必要
        TF845 を設定する
        Support for Locked Pages on SQL Server 2008 R2 Standard Edition x64, on SQL
         Server 2005 Standard Edition 64-bit systems, and on SQL Server 2008 Standard
         Edition 64-bit systems
            http://support.microsoft.com/kb/970070/en-us
    SQL Server 2012 では上記対応は不要
        How to enable the "locked pages" feature in SQL Server 2012
            http://support.microsoft.com/kb/2659143/en-us
    max server memory と併用して、SQL Server が確保可能な上限値を設定する
     のが推奨
        Lock Pages in Memory ... do you really need it?
            http://blogs.technet.com/b/askperf/archive/2008/03/25/lock-pages-in-memory-do-you-really-
             need-it.aspx



    21                      SQLTO 第 5 回勉強会 http://www.sqlto.net                           2012/08/04
設定の確認 (1/2)
    Process Explorer で [sqlservr.exe] の情報を表示して、
     [SeLockMemoryPrivilege] が有効になっているかを確認
        Lock Pages in Memory オプションの有効化 (Windows)
            http://msdn.microsoft.com/ja-jp/library/ms190730.aspx




    22                   SQLTO 第 5 回勉強会 http://www.sqlto.net         2012/08/04
設定の確認 (2/2)
    SQL Server の ERRORLOG に以下の行が出力されてい
     ることを確認
    Using locked pages in the memory manager.




23                   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
参考 : 3 種類のメモリモデル
トレースフラグ                   効果
-T834                     ラージページを有効にする
-T835                     AWE モデルを無効化
    従来モデル
          メモリ内のページのロックを設定しない
         Using conventional memory in the memory manager.

     AWE モデル
          メモリ内のページのロックを設定
         Using locked pages in the memory manager.

    ラージページモデル
                                                                    x64 の場合
          AWE モデルの設定 + 物理メモリ 8GB 超え + TF834                          • Small Page : 4KB
         Using large pages in the memory manager.                     • Large Page : 2MB

     24                       SQLTO 第 5 回勉強会 http://www.sqlto.net           2012/08/04
設定をするとどのような効果が??
   設定することでSQL Server のバッファプールのメモリをロックした
    ページとして取得し、バッファプールをページングの対象外にする
       SQL Server と他のミドルウェアが共存しているときに、SQL Server で
        使用しているメモリ (バッファプール) のページアウトを抑制する
       ワーキングセットのトリミングを発生を防ぐ
           DO’s&DONT’s #12: やった方がいいこと - max server memory を設定する
               http://blogs.msdn.com/b/jpsql/archive/2012/02/06/do-s-amp-dont-s-12-max-server-memory.aspx




   SQL Server で一定のメモリを確保しておきたい / SQL
    Server 専用のサーバーで設定することが多い

25                          SQLTO 第 5 回勉強会 http://www.sqlto.net                              2012/08/04
ワーキングセットのトリミング??
   他のプロセス (SQL Server 以外のプロセス) がメモリが必
    要となった時に、SQL Server が使用しているメモリをページ
    アウトして、他のプロセスがメモリを確保できる状態にする

   詳しくは SQLTO の兄貴 (@elanlilac) のブログ参照
       SQL Server プロセスのワーキングセットのトリミング
           http://elan.blog.so-net.ne.jp/2010-08-17



26                   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
ワーキングセットのトリミング
              メモリの一部をページアウト
                                    SQL Server


                                                    他のプロセス
 SQL Server


                   他のプロセス
                                                    SQL Server


     サーバーの
     物理メモリ
     使用状況
27            SQLTO 第 5 回勉強会 http://www.sqlto.net     2012/08/04
参考 : ワーキングセットのトリミング発生時のイベント
ログの種類 : アプリケーション
ソース : MSSQLSERVER
イベント ID : 17890




    28              SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
使用メモリを確認する際の注意
   Lock Page in Memory を有効にするとワーキングセットではな
    くロックされたページとしてメモリが取得されるため、タスクマネー
    ジャーからメモリの確認はできなくなる

   設定後はパフォーマンスモニターの SQL Server のカウンターや
    DMV で使用しているメモリを確認する
       sqlservr.exe のプロセスの Working Set ではなく、SQL Server 固
        有のカウンターで使用しているメモリを確認する
           SQL Server:Memory Manager¥Total Server Memory (KB)
           sys.dm_os_process_memory

29                   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
参考 : タスクマネージャーでメモリを確認

                                   AWE モデル / ラージページモデルを
                                    使用している場合、表示されている
                                    メモリでは正確なメモリ使用量を
                                          把握できない




30   SQLTO 第 5 回勉強会 http://www.sqlto.net       2012/08/04
Demo
     設定有無によるメモリ使用状況の確認方法の違い




31    SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
本日の Agenda

ファイルの瞬時初期化

メモリ内のページのロック

データファイルの分割
32    SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
データファイルの分割




33   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
どこで設定する??
   SQL Server Management Studio (SSMS) で設定




                       データファイルを 4 個で構成
                          (mdf : 1 / ndf 3)

34           SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
設定をするとどのような効果が??
   ディスク I/O の分散
       データファイルを異なるディスク (物理ディスク / 論理ドライブ) に分散させ
        て格納することで I/O を分散させることができる。
       ログファイルは特定のファイルにシーケンシャル (順次) 書き込みをするた
        め、複数のファイルを異なるディスクに配置しても I/O 分散の効果はない

   データファイルのサイズを均等にすることがポイント
       SQL Server はデータファイルの空き領域に応じて使用するファイルを決
        めるため、ファイルサイズが均等でないと特定のファイルに I/O が集中し、
        分散した効果が薄くなる
           データ書き込みの分散 / データ読み込みの分散


35                SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
参考 : SAP のベストプラクティスで見るファイル数
    Small sized systems: 4 data files.
        Systems usually run on dedicated database servers which have between 4 and
         8 CPU cores.
    Medium sized systems: 8 or 16 data files.
        Systems usually run on dedicated database servers which have between 8 and
         16 CPU cores.
    Large sized systems: A minimum of 16 data files and maximum of 32.
        Systems which today run on hardware between 16 and 32 CPU cores or up to
         64 threads.
    Xtra large sized systems: 32 Datafiles for systems with 32 to 256 cores
     (Contact Microsoft for very large >15TB databases)

    Frequently Asked Questions we heard on the SAP on SQL 2008 Training
     course this year
        http://blogs.msdn.com/b/saponsqlserver/archive/2010/06/28/frequently-asked-questions-we-heard-on-the-sap-on-sql-2008-
         training-course-this-year.aspx




    36                           SQLTO 第 5 回勉強会 http://www.sqlto.net                                               2012/08/04
サイズが均等でない場合の I/O



                                                         DEMODB2 の書き込みが
                                                          他のファイルより多い


 DEMODB2 : 400MB
  それ以外 : 100MB




37                 SQLTO 第 5 回勉強会 http://www.sqlto.net         2012/08/04
サイズが均等の場合の I/O



                                                   各ファイルに均等に
                                                     書き込み



すべてのファイル : 100MB




38           SQLTO 第 5 回勉強会 http://www.sqlto.net        2012/08/04
ファイルサイズと I/O
         ファイルグループ                                ログファイル




線の太さ : I/O の量

                           データ挿入
                           データ更新

 39             SQLTO 第 5 回勉強会 http://www.sqlto.net       2012/08/04
Demo
           ファイルサイズによる I/O の偏り




40   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
自動拡張時の注意
   ファイルの自動拡張が発生するとデフォルトの設定では、特定
    のファイルのみが拡張され、拡張以降は I/O の分散の効果
    が薄れてしまう。

   TF1117 を設定することで、自動拡張が発生した場合、ファ
    イルグループ内の全ファイルを拡張することができる。



41        SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
ファイルの均等拡張
   トレースフラグを設定していない場合
        拡張前                               拡張後




   トレースフラグを設定している場合
        拡張前                               拡張後




42        SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
Demo
         トレースフラグによる自動拡張の違い




43   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
本日お話させていただいた内容

ファイルの瞬時初期化

メモリ内のページのロック

データファイルの分割
44   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04
FAQ


45   SQLTO 第 5 回勉強会 http://www.sqlto.net   2012/08/04

Sql server よく聞く設定とその効果

  • 1.
    SQL Server よく聞く設定とその効果 小澤 真之 (@Masayuki_Ozawa) http://engineermemo.wordpress.com
  • 2.
    自己紹介  SQLTO の運営スタッフ  現在、フリーランスのエンジニアとして活動中  お仕事がありましたらお声がけいただけると生活に潤いができて嬉しいです  SE の雑記というブログ (http://engineermemo.wordpress.com) を公開しています。  SQL Server を中心とした Microsoft 製品の検証結果を誤字 / 脱字を交えなが ら、気ままに公開しています  SNS のアカウント  Twitter : @Masayuki_Ozawa  Facebook :masayuki.ozawa 2 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 3.
  • 4.
  • 5.
    ファイルの瞬時初期化 5 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 6.
    どこで設定する??  グループポリシー (またはローカルセキュリティポリシー) で設定  SQL Server のサービスアカウントに [ボリュームの保守タスクを実行] を付与 デフォルトでは Administrators グループのみが設定されている (Local System は権限が付与されている) 6 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 7.
    設定の確認  Process Explorer で [sqlservr.exe] の情報を表示して、 [SeManageVolumePrivilege] が有効になっているかを確認  データベース ファイルの初期化  http://msdn.microsoft.com/ja-jp/library/ms175935.aspx Process Explorer : http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx 7 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 8.
    設定をするとどのような効果が??  ファイルの瞬時初期化 (Instant File Initialization) が使用できるようになる  設定をした場合、データファイルのサイズ変更時のゼロ埋め (Zeroing) が発生しな くなるため瞬時にサイズの変更が可能となる  設定はデータファイル (mdf / ndf)にのみ有効  ログファイル (ldf) は瞬時初期化を有効にしてもゼロ埋めが発生する  効果が見れる操作  データベースの作成  データファイルのサイズ変更 (手動拡張 / 自動拡張)  データベースのリストア 8 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 9.
    ゼロ埋め 設定なし 設定あり  データファイル  データファイル 00000000000000000000000 ABCDABCDABCDABCDABCDABCDA ABCDABCDABCDABCDABCDABCDA 00000000000000000000000 BCDABCDABCDABCDABCDABCDAB BCDABCDABCDABCDABCDABCDAB CDABCDABCDABCDABCDABCDABC 00000000000000000000000 CDABCDABCDABCDABCDABCDABC DABCDABCDABCDABCDABCDABCD 00000000000000000000000 DABCDABCDABCDABCDABCDABCD  ログファイル  ログファイル 00000000000000000000000 ABCDABCDABCDABCDABCDABCDA 00000000000000000000000 ABCDABCDABCDABCDABCDABCDA 00000000000000000000000 BCDABCDABCDABCDABCDABCDAB 00000000000000000000000 BCDABCDABCDABCDABCDABCDAB 00000000000000000000000 CDABCDABCDABCDABCDABCDABC CDABCDABCDABCDABCDABCDABC 00000000000000000000000 DABCDABCDABCDABCDABCDABCD DABCDABCDABCDABCDABCDABCD 00000000000000000000000 00000000000000000000000 9 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 10.
    データベースリストアと瞬時初期化の影響 効果が見れる操作 • データベースの作成 • データファイルのサイズ変更 ログファイルのゼロ埋め • データベースのリストア 瞬時初期化で スキップできる データファイルのゼロ埋め リストアの実施 ロールフォワードの実施 10 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 11.
    ゼロ埋めは何のためにしている??  主にセキュリティ面を考慮しての動作  削除したはずの内容 (データファイルを格納していたディスク内に以前存在し ていたデータ) を公開されることを防ぐ  Books Online (BOL) のデータベース ファイルの初期化の内容  “削除されたディスクの内容は、新しいデータがファイルに書き込まれるときにのみ上書き されるため、許可されていないプリンシパルがこの削除された内容にアクセスする可能性 があります。” WinHex : http://www.x-ways.net/winhex/ 11 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 12.
    設定有無で SQL Serverの起動は早くなる??  temdb は SQL Server の起動のたびに初期化がされる  瞬時初期化を設定することによる起動への影響は??  SQL Server 2008 R2 SP1 / SQL Server 2012 CU2 で検証してみたところ、 tempdb のデータファイルが再作成されるのは、[データファイルが存在しなかった場合] のようで、既にファイルが存在している場合はゼロ埋めを伴うファイルの新規作成は実施さ れないようである  ただし、ファイルの新規作成がされないだけで tempdb は起動のたびに初期化されますので 混同しないようにお願いします  リストアも同様だが、データファイルが既に存在しているかどうかで瞬時初期化の処理 に影響がでてくる  データファイルのサイズを大きくするかどうかも影響しているようですのでリストア時間の計測をする 際には注意が必要 12 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 13.
    ファイルの瞬時初期化関係の TF  ファイルの瞬時初期化関係のトレースフラグ (TF) トレースフラグ 効果 -T1806 瞬時初期化を無効化 -T3004 ゼロ埋め発生時の情報をログ (ERRORLOG) に出力 -T3605  ゼロ埋めのログ (ERRORLOG) Zeroing G:¥SQL2012¥TEST_log.ldf from page 0 to 6400 (0x0 to 0x3200000) Zeroing E:¥SQL2012¥TEST.mdf from page 0 to 25600 (0x0 to 0xc800000) Zeroing completed on G:¥SQL2012¥TEST_log.ldf Zeroing completed on E:¥SQL2012¥TEST.mdf Starting up database 'TEST'. FixupLogTail(progress) zeroing G:¥SQL2012¥TEST_log.ldf from 0x5000 to 0x6000. Zeroing G:¥SQL2012¥TEST_log.ldf from page 3 to 483 (0x6000 to 0x3c6000) Zeroing completed on G:¥SQL2012¥TEST_log.ldf 13 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 14.
    トレースフラグの設定 SQL Server 構成マネージャーの起動時の パラメーターで –T<数値> で設定 14 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 15.
    デモ環境  ThinkPad X201  CPU : Core i3  HD : 500GB  Memory : 8GB  OS : Windows Server 2012 RC (Release Candidate)  ゲスト OS (Hyper-V 3.0)  CPU : 2 コア  Memory : 4GB  OS : Windows Server 2012 RC  RDBMS : SQL Server 2012 SP1 CTP3  Minimum version requirements when you install SQL Server on Windows Server 2012 Release Candidate or on Windows 8 Release Preview  http://support.microsoft.com/kb/2681562 15 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 16.
    Demo ゼロ埋め発生時のログ出力 ファイルの瞬時初期化の有無による処理の違い 16 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 17.
    参考 : 瞬時初期化についての技術情報  データベース ファイルの初期化  http://msdn.microsoft.com/ja-jp/library/ms175935.aspx  How and Why to Enable Instant File Initialization  http://blogs.msdn.com/b/sql_pfe_blog/archive/2009/12 /23/how-and-why-to-enable-instant-file- initialization.aspx  How It Works: What is Restore/Backup Doing?  http://blogs.msdn.com/b/psssql/archive/2008/01/23/ho w-it-works-what-is-restore-backup-doing.aspx 17 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 18.
  • 19.
    メモリ内のページのロック (Lock Page in Memory) 19 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 20.
    どこで設定する??  グループポリシー (またはローカルセキュリティポリシー) で設定  SQL Server のサービスアカウントに [メモリ内のページのロック] を付与 デフォルトでは設定されていない (Local System は権限が付与されている) 20 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 21.
    参考 : バージョンによる注意点  SQL Server 2008 R2 までの Standard Edition では以下の技術情報の対応が 必要  TF845 を設定する  Support for Locked Pages on SQL Server 2008 R2 Standard Edition x64, on SQL Server 2005 Standard Edition 64-bit systems, and on SQL Server 2008 Standard Edition 64-bit systems  http://support.microsoft.com/kb/970070/en-us  SQL Server 2012 では上記対応は不要  How to enable the "locked pages" feature in SQL Server 2012  http://support.microsoft.com/kb/2659143/en-us  max server memory と併用して、SQL Server が確保可能な上限値を設定する のが推奨  Lock Pages in Memory ... do you really need it?  http://blogs.technet.com/b/askperf/archive/2008/03/25/lock-pages-in-memory-do-you-really- need-it.aspx 21 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 22.
    設定の確認 (1/2)  Process Explorer で [sqlservr.exe] の情報を表示して、 [SeLockMemoryPrivilege] が有効になっているかを確認  Lock Pages in Memory オプションの有効化 (Windows)  http://msdn.microsoft.com/ja-jp/library/ms190730.aspx 22 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 23.
    設定の確認 (2/2)  SQL Server の ERRORLOG に以下の行が出力されてい ることを確認 Using locked pages in the memory manager. 23 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 24.
    参考 : 3種類のメモリモデル トレースフラグ 効果 -T834 ラージページを有効にする -T835 AWE モデルを無効化  従来モデル  メモリ内のページのロックを設定しない Using conventional memory in the memory manager.  AWE モデル  メモリ内のページのロックを設定 Using locked pages in the memory manager.  ラージページモデル x64 の場合  AWE モデルの設定 + 物理メモリ 8GB 超え + TF834 • Small Page : 4KB Using large pages in the memory manager. • Large Page : 2MB 24 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 25.
    設定をするとどのような効果が??  設定することでSQL Server のバッファプールのメモリをロックした ページとして取得し、バッファプールをページングの対象外にする  SQL Server と他のミドルウェアが共存しているときに、SQL Server で 使用しているメモリ (バッファプール) のページアウトを抑制する  ワーキングセットのトリミングを発生を防ぐ  DO’s&DONT’s #12: やった方がいいこと - max server memory を設定する  http://blogs.msdn.com/b/jpsql/archive/2012/02/06/do-s-amp-dont-s-12-max-server-memory.aspx  SQL Server で一定のメモリを確保しておきたい / SQL Server 専用のサーバーで設定することが多い 25 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 26.
    ワーキングセットのトリミング??  他のプロセス (SQL Server 以外のプロセス) がメモリが必 要となった時に、SQL Server が使用しているメモリをページ アウトして、他のプロセスがメモリを確保できる状態にする  詳しくは SQLTO の兄貴 (@elanlilac) のブログ参照  SQL Server プロセスのワーキングセットのトリミング  http://elan.blog.so-net.ne.jp/2010-08-17 26 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 27.
    ワーキングセットのトリミング メモリの一部をページアウト SQL Server 他のプロセス SQL Server 他のプロセス SQL Server サーバーの 物理メモリ 使用状況 27 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 28.
    参考 : ワーキングセットのトリミング発生時のイベント ログの種類: アプリケーション ソース : MSSQLSERVER イベント ID : 17890 28 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 29.
    使用メモリを確認する際の注意  Lock Page in Memory を有効にするとワーキングセットではな くロックされたページとしてメモリが取得されるため、タスクマネー ジャーからメモリの確認はできなくなる  設定後はパフォーマンスモニターの SQL Server のカウンターや DMV で使用しているメモリを確認する  sqlservr.exe のプロセスの Working Set ではなく、SQL Server 固 有のカウンターで使用しているメモリを確認する  SQL Server:Memory Manager¥Total Server Memory (KB)  sys.dm_os_process_memory 29 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 30.
    参考 : タスクマネージャーでメモリを確認 AWE モデル / ラージページモデルを 使用している場合、表示されている メモリでは正確なメモリ使用量を 把握できない 30 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 31.
    Demo 設定有無によるメモリ使用状況の確認方法の違い 31 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 32.
  • 33.
    データファイルの分割 33 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 34.
    どこで設定する??  SQL Server Management Studio (SSMS) で設定 データファイルを 4 個で構成 (mdf : 1 / ndf 3) 34 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 35.
    設定をするとどのような効果が??  ディスク I/O の分散  データファイルを異なるディスク (物理ディスク / 論理ドライブ) に分散させ て格納することで I/O を分散させることができる。  ログファイルは特定のファイルにシーケンシャル (順次) 書き込みをするた め、複数のファイルを異なるディスクに配置しても I/O 分散の効果はない  データファイルのサイズを均等にすることがポイント  SQL Server はデータファイルの空き領域に応じて使用するファイルを決 めるため、ファイルサイズが均等でないと特定のファイルに I/O が集中し、 分散した効果が薄くなる  データ書き込みの分散 / データ読み込みの分散 35 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 36.
    参考 : SAPのベストプラクティスで見るファイル数  Small sized systems: 4 data files.  Systems usually run on dedicated database servers which have between 4 and 8 CPU cores.  Medium sized systems: 8 or 16 data files.  Systems usually run on dedicated database servers which have between 8 and 16 CPU cores.  Large sized systems: A minimum of 16 data files and maximum of 32.  Systems which today run on hardware between 16 and 32 CPU cores or up to 64 threads.  Xtra large sized systems: 32 Datafiles for systems with 32 to 256 cores (Contact Microsoft for very large >15TB databases)  Frequently Asked Questions we heard on the SAP on SQL 2008 Training course this year  http://blogs.msdn.com/b/saponsqlserver/archive/2010/06/28/frequently-asked-questions-we-heard-on-the-sap-on-sql-2008- training-course-this-year.aspx 36 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 37.
    サイズが均等でない場合の I/O DEMODB2 の書き込みが 他のファイルより多い DEMODB2 : 400MB それ以外 : 100MB 37 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 38.
    サイズが均等の場合の I/O 各ファイルに均等に 書き込み すべてのファイル : 100MB 38 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 39.
    ファイルサイズと I/O ファイルグループ ログファイル 線の太さ : I/O の量 データ挿入 データ更新 39 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 40.
    Demo ファイルサイズによる I/O の偏り 40 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 41.
    自動拡張時の注意  ファイルの自動拡張が発生するとデフォルトの設定では、特定 のファイルのみが拡張され、拡張以降は I/O の分散の効果 が薄れてしまう。  TF1117 を設定することで、自動拡張が発生した場合、ファ イルグループ内の全ファイルを拡張することができる。 41 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 42.
    ファイルの均等拡張  トレースフラグを設定していない場合 拡張前 拡張後  トレースフラグを設定している場合 拡張前 拡張後 42 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 43.
    Demo トレースフラグによる自動拡張の違い 43 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04
  • 44.
  • 45.
    FAQ 45 SQLTO 第 5 回勉強会 http://www.sqlto.net 2012/08/04