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

45
SQL Server よく聞く設定とその効果 小澤 真之 (@Masayuki_Ozawa) http://engineermemo.wordpress.com

Upload: masayuki-ozawa

Post on 05-Dec-2014

13.718 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

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

SQL Server よく聞く設定とその効果

小澤 真之 (@Masayuki_Ozawa)

http://engineermemo.wordpress.com

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

自己紹介

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

SQLTO の運営スタッフ

現在、フリーランスのエンジニアとして活動中 お仕事がありましたらお声がけいただけると生活に潤いができて嬉しいです

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

SNS のアカウント Twitter : @Masayuki_Ozawa

Facebook :masayuki.ozawa

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

本日の Agenda

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

ファイルの瞬時初期化

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

データファイルの分割

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

本日の Agenda

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

ファイルの瞬時初期化

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

データファイルの分割

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

ファイルの瞬時初期化

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

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

どこで設定する??

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

グループポリシー (またはローカルセキュリティポリシー) で設定

SQL Server のサービスアカウントに [ボリュームの保守タスクを実行] を付与

デフォルトでは Administrators グループのみが設定されている

(Local System は権限が付与されている)

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

設定の確認

2012/08/04 SQLTO 第 5 回勉強会 http://www.sqlto.net 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

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

設定をするとどのような効果が??

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

ファイルの瞬時初期化 (Instant File Initialization) が使用できるようになる

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

ログファイル (ldf) は瞬時初期化を有効にしてもゼロ埋めが発生する

効果が見れる操作 データベースの作成

データファイルのサイズ変更 (手動拡張 / 自動拡張)

データベースのリストア

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

ゼロ埋め

設定なし 設定あり

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

データファイル

ログファイル

データファイル

ログファイル

ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD

ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD

ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

データベースリストアと瞬時初期化の影響

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

ロールフォワードの実施

リストアの実施

データファイルのゼロ埋め

ログファイルのゼロ埋め

瞬時初期化で スキップできる

効果が見れる操作 • データベースの作成 • データファイルのサイズ変更 • データベースのリストア

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

ゼロ埋めは何のためにしている??

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

主にセキュリティ面を考慮しての動作 削除したはずの内容 (データファイルを格納していたディスク内に以前存在していたデータ) を公開されることを防ぐ

Books Online (BOL) のデータベース ファイルの初期化の内容 “削除されたディスクの内容は、新しいデータがファイルに書き込まれるときにのみ上書きされるため、許可されていないプリンシパルがこの削除された内容にアクセスする可能性があります。”

WinHex : http://www.x-ways.net/winhex/

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

設定有無で SQL Server の起動は早くなる??

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

temdb は SQL Server の起動のたびに初期化がされる 瞬時初期化を設定することによる起動への影響は??

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

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

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

ファイルの瞬時初期化関係の TF

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

ファイルの瞬時初期化関係のトレースフラグ (TF) トレースフラグ 効果

-T1806 瞬時初期化を無効化

-T3004 -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

ゼロ埋めのログ (ERRORLOG)

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

トレースフラグの設定

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

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

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

デモ環境

2012/08/04 SQLTO 第 5 回勉強会 http://www.sqlto.net 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

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

Demo ゼロ埋め発生時のログ出力

ファイルの瞬時初期化の有無による処理の違い

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

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

参考 : 瞬時初期化についての技術情報

2012/08/04 SQLTO 第 5 回勉強会 http://www.sqlto.net 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/how-it-works-what-is-restore-backup-doing.aspx

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

本日の Agenda

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

ファイルの瞬時初期化

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

データファイルの分割

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

メモリ内のページのロック (Lock Page in Memory)

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

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

どこで設定する??

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

グループポリシー (またはローカルセキュリティポリシー) で設定 SQL Server のサービスアカウントに [メモリ内のページのロック] を付与

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

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

参考 : バージョンによる注意点

2012/08/04 SQLTO 第 5 回勉強会 http://www.sqlto.net 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

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

設定の確認 (1/2)

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

Process Explorer で [sqlservr.exe] の情報を表示して、[SeLockMemoryPrivilege] が有効になっているかを確認 Lock Pages in Memory オプションの有効化 (Windows)

http://msdn.microsoft.com/ja-jp/library/ms190730.aspx

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

設定の確認 (2/2)

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

SQL Server の ERRORLOG に以下の行が出力されていることを確認

Using locked pages in the memory manager.

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

参考 : 3 種類のメモリモデル

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

AWE モデル メモリ内のページのロックを設定

Using locked pages in the memory manager.

Using conventional memory in the memory manager.

Using large pages in the memory manager.

従来モデル

メモリ内のページのロックを設定しない

ラージページモデル AWE モデルの設定 + 物理メモリ 8GB 超え + TF834

トレースフラグ 効果

-T834 ラージページを有効にする

-T835 AWE モデルを無効化

x64 の場合 • Small Page : 4KB • Large Page : 2MB

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

設定をするとどのような効果が??

2012/08/04 SQLTO 第 5 回勉強会 http://www.sqlto.net 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 専用のサーバーで設定することが多い

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

ワーキングセットのトリミング??

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

他のプロセス (SQL Server 以外のプロセス) がメモリが必要となった時に、SQL Server が使用しているメモリをページアウトして、他のプロセスがメモリを確保できる状態にする

詳しくは SQLTO の兄貴 (@elanlilac) のブログ参照

SQL Server プロセスのワーキングセットのトリミング

http://elan.blog.so-net.ne.jp/2010-08-17

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

ワーキングセットのトリミング

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

サーバーの 物理メモリ 使用状況

SQL Server

他のプロセス SQL Server

他のプロセス

SQL Server メモリの一部をページアウト

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

参考 : ワーキングセットのトリミング発生時のイベント

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

ログの種類 : アプリケーション ソース : MSSQLSERVER イベント ID : 17890

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

使用メモリを確認する際の注意

2012/08/04 SQLTO 第 5 回勉強会 http://www.sqlto.net 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

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

参考 : タスクマネージャーでメモリを確認

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

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

把握できない

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

Demo 設定有無によるメモリ使用状況の確認方法の違い

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

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

本日の Agenda

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

ファイルの瞬時初期化

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

データファイルの分割

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

データファイルの分割

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

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

どこで設定する??

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

SQL Server Management Studio (SSMS) で設定

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

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

設定をするとどのような効果が??

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

ディスク I/O の分散 データファイルを異なるディスク (物理ディスク / 論理ドライブ) に分散させて格納することで I/O を分散させることができる。

ログファイルは特定のファイルにシーケンシャル (順次) 書き込みをするため、複数のファイルを異なるディスクに配置しても I/O 分散の効果はない

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

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

参考 : SAP のベストプラクティスで見るファイル数

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

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

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

サイズが均等でない場合の I/O

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

DEMODB2 : 400MB それ以外 : 100MB

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

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

サイズが均等の場合の I/O

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

すべてのファイル : 100MB

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

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

ファイルサイズと I/O

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

ファイルグループ ログファイル

データ挿入 データ更新

線の太さ : I/O の量

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

Demo ファイルサイズによる I/O の偏り

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

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

自動拡張時の注意

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

ファイルの自動拡張が発生するとデフォルトの設定では、特定のファイルのみが拡張され、拡張以降は I/O の分散の効果が薄れてしまう。

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

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

ファイルの均等拡張

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

トレースフラグを設定していない場合

トレースフラグを設定している場合

拡張前 拡張後

拡張前 拡張後

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

Demo トレースフラグによる自動拡張の違い

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

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

本日お話させていただいた内容

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

ファイルの瞬時初期化

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

データファイルの分割

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

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

FAQ