SQL Server 運用 101
Masayuki Ozawa (@Masayuki_Ozawa)
自己紹介
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~2
 バイトに行くために歩いていたら、黒塗りの高級車に乗った、通りすがりの
「えろす師匠 (@ichi_sien a.k.a. えろす財閥総帥快楽亭えろす師匠ひさし胡麻油ビスコのりたま)」
に、
「おまえ、SQL Server触ったことあるんだろ。NAWA Tech で、SQL Server の
運用について、喋れや(゚Д゚)ゴルァ!! 」
と声をかけられたので、これからの生活を守るために、SQL Server とか
よくわからないけど、僕には泣きながら首を縦に振るしかありませんでした。
 「HDMI 経由で配信するから、VGA 接続のお前の持ってきた PC は使えない
ぞ(゚Д゚)ゴルァ!! 」
って名古屋で言われたので、先程まで Azure 上にデモ環境作ってました。
ちゃんとした自己紹介
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~3
 関東で SQL Server を中心に Microsoft 製品を取り扱う案件に従事してい
ます。
 IT Professional (IT Pro) 系のインフラ案件)が中心
 以前は SIer に勤めていましたが、数年前からフリーランスになりました。
 SQL Server コミュニティ:SQLTO
 Microsoft Azure コミュニティ : JAZUG
 ブログ:SE の雑記
 http://blog.engineer-memo.com
 Twitter
 @Masayuki_Ozawa
101 (ワンオーワン)
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~4
 カリスマトレーナー K 氏曰く
 ちなみに、101というのは、USのテクニカルカンファレ
ンスでよく見かける言葉で、基礎とか、「○○のいろ
は」などの意味があります。
 http://goo.gl/pq7GKw から抜粋
 SQL Server の「構築」「設定」「運用」で、
意識しておきたいポイントをざっくりとご紹介
構築
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~5
インスタンスの構成
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~6
インスタンスの構成
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~7
 既定のインスタンス
 一つのみ作成可能
 コンピューター名で接続
 デフォルトは TCP 1433 で接続
 名前付きインスタンス
 複数作成可能
 コンピューター名インスタンス名で接続
 デフォルトは動的ポート (サービスの起動ごとに変更される) で接続
 特定のポート番号で起動したい場合はポートを固定化する
 既定のインスタンス/名前付きインスタンスを、インストール後に変更
することはできない
インスタンスの構成による接続の違い
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~8
コンピューター名で接続
TCP 1433 で接続
コンピューター名インスタンス名で接続
SQL Sever Browser
①UDP 1434 で接続
②UDP1434 から受け取ったポートで接続
https://technet.microsoft.com/ja-jp/library/ms190204(v=sql.105).aspx
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~9
SQL Server Browser の応答
照合順序
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~10
照合順序
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~11
 照合順序
 並び替え / 比較方法に関しての規則 (重みづけの設定)
 非 Unicode 文字列のコードページ (Japanese : CP932 / Latin1 : CP1252)
 https://technet.microsoft.com/ja-jp/library/ms186356(v=sql.105).aspx
 https://msdn.microsoft.com/ja-jp/library/ms143726(v=sql.120).aspx
 サーバー照合順序はインストール時にのみ設定可能
 データベース名/ログイン名/一時テーブル/変数/カーソル等に影響
 https://technet.microsoft.com/ja-jp/library/ms188686(v=sql.105).aspx
 https://msdn.microsoft.com/ja-jp/library/ff929080(v=sql.120).aspx
 製品によっては照合順序が限定されることもある
 インストール後に設定を変更したい場合は、システムデータベースを再構築
 https://msdn.microsoft.com/ja-jp/library/dd207003(v=sql.120).aspx
 再構築をすると、ログイン/SQL Server エージェントジョブ/データベースのエントリ
情報等が初期化される
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~12
照合順序と部分包含
インストール ディレクトリ
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~13
インストール ディレクトリ
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~14
 インスタンス ルート ディレクトリ
 SQL Server を動作させるためのプログラム群を格納
 インストール後の変更はできない
 Windows Server 2008 R2 では、ベアメタルバックアップ取得時に自動的に選択される
 サービスのイメージパスのドライブが自動的に含まれるため
 データ ルート ディレクトリ
 ERRORLOG / デフォルトトレース等を格納
 一部のファイルは移動することが可能だが、すべてを移動することは困難なため、ログを保存するドライブに指定がある場合
は、インストール時に指定
 システム データベース ディレクトリはデータルートディレクトリを元に設定され変更できない
 「インスタンスIDMSSQL ディレクトリ」は固定のため、変更することは出来ない
 以下は変更することの難易度は高くない
 システム データベース ディレクトリに格納されたシステムデータベース / tempdb
 https://msdn.microsoft.com/ja-jp/library/ms345408(v=sql.120).aspx
 ユーザー データベース ディレクトリ
 ユーザー データベース ログ ディレクトリ
 バックアップ ディレクトリ
構成ファイル
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~15
構成ファイル
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~16
 SQL Server インストール時に選択したインストールパラメーターが、
構成ファイルとしてエクスポートされる。
 他者がインストールした環境の、インストールパラメーターの確認
 SQL Server のインストールを構成ファイルから実施することも可能
 構成ファイルを使用した GUI / コマンドラインインストールが可能
 複数の環境に同一パラメーターでインストールする場合に利用
 https://msdn.microsoft.com/ja-jp/library/dd239405(v=sql.120).aspx
 https://msdn.microsoft.com/ja-jp/library/ms144259(v=SQL.10).aspx
ディスクレイアウト
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~17
 ファイルに対してのアクセスパターン
 データファイル : シーケンシャル / ランダム / Read : Write
 ログファイル : シーケンシャル / Read : Write
 tempdb : シーケンシャル / ランダム / Read : Write
 システムデータベース (master / model /msdb) : 発生する I/O は低い
 ドライブ文字
 DBCC CHECKDB はドライブ文字毎に処理の内部リストを作成する
 https://support.microsoft.com/ja-jp/kb/2634571
 トレースフラグ 2549 を有効にすることで、各データベースファイルが一意のドライブ
にあるとみるように変更することができる
 追加したディスクをフォルダーにマウントして使用する場合などに利用できる
設定
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~18
SQL Server のサービスアカウント
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~19
SQL Server のサービスアカウント
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~20
 ボリュームの保守タスクを実行
 データファイルの拡張が発生した際に、「0 初期化」を行わずに瞬時初期化を実施
 データファイルの拡張を瞬時に完了することができる
 リストア時にデータファイルの領域確保をする時にも有効
 ログファイルは瞬時初期化が有効にならないため初期サイズ/拡張サイズを適切に設定
 https://technet.microsoft.com/ja-jp/library/ms175935.aspx
 メモリ内のページのロック
 SQL Server が確保したバッファプールのメモリをページアウトの対象外にする
 SQL Server を実行しているサーバー内でメモリを使用する他のアプリが実行されている場合
に、バッファプールを安定して確保することができる
 「max server memory」の設定をしないと、確保可能なメモリを SQL Server がすべて
確保するため、「max server memory」と必ず併用
 https://msdn.microsoft.com/ja-jp/library/ms190730(v=sql.120).aspx
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~21
サービスアカウントの権限の確認
SQL Server の設定
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~22
SQL Server の設定
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~23
 max server memory
 SQL Server のバッファプールで確保するメモリの上限
 デフォルトは 2TB に設定されている
 max server memory の設定をしても、SQL Server のサービス起動時に上限までメモリ
を確保するわけではない
 サービス起動時に上限までメモリを確保させたい場合は追加オプションの設定が必要
 https://msdn.microsoft.com/ja-jp/library/ms178067(v=sql.120).aspx
 max degree of parallelism
 並列処理を実行する際に使用する CPU コア数の制限
 デフォルトは 0 で、最大 64 コアを使用して並列処理を実行する
 1 を設定することで、並列クエリの実行を禁止することができるが、1 を設定するのは控えた
ほうがよい (1 コアで発生させられる I/O の限界を考慮)
 一般的には、CPU コア数の 1/2 ~1/4 / NUMA ノード内の CPU コア数を上限とする
 https://msdn.microsoft.com/ja-jp/library/ms189094(v=sql.120).aspx
tempdb の分割
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~24
 データファイルを CPU コア数に応じて分割
 分割数の例
 データファイルのサイズと自動拡張サイズは全ファイル均等にする
 データファイルは空きサイズに応じて使用頻度が変わるため、サイズに偏りが
あると特定のファイルにアクセスが集中する
 自動拡張されてもサービスの再起動後は初期サイズに戻る
 ログファイルは、シーケンシャルに使用されるため分割による性能面での効果
はない
規模 CPU コア データファイル
小規模 4~8 4 データファイル
中規模 8~16 8~16 データファイル
大規模 16~32 16~32 データファイル
超大規模 32~256 32 データファイル
tempdb の分割
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~25
SQL Server 2016 のインストール時の設定
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~26
トレースフラグ
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~27
-- Session Level
DBCC TRACEON (3226)
DBCC TRACEOFF (3226)
-- Global Level
DBCC TRACEON (3226,-1)
DBCC TRACEOFF (3226,-1)
-- Status
DBCC TRACESTATUS
トレースフラグ
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~28
 SQL Server の動作を変更するためのオプション
 T1117
 データファイルの自動拡張が発生した場合に、すべてのデータファイルを同時に拡張する
 データファイルサイズの均等性を保つことができる
 拡張サイズが大きい場合は瞬時初期化との併用必須
 SQL Server 2016 CTP 2.4 では tempdb の同時拡張が実装されているような動作をしている
 T1118
 単一エクステントではなく、混合エクステントの割り当てで固定できる
 アロケーションページ (GAM/SGAM/PFS) の競合 (PAGELATCH) の減少につながる
 データベースファイル単位に一定間隔でアロケーションページが存在する
 PFS : 8,088 ページ単位 (64MB 分) / GAM:SGAM : 511,000 ページ単位 (4GB 分)
 T3226
 バックアップのログ出力を抑制する
 エラーについてはログに出力される
 セッションレベルのトレースフラグでも設定可能
 短い間隔でログを取得する場合、バックアップ取得のログ情報が増えすぎるのを抑える
 https://msdn.microsoft.com/ja-jp/library/ms188396(v=sql.120).aspx
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~29
トレースフラグの設定 (1117/ 3226)
ログのメンテナンス
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~30
 ERRORLOG
 デフォルトは SQL Server のサービスが再起動され他タイミングで、6 世代
 SQL Server が連続稼働していると一つの ERRORLOG に書き込まれ続けるため、
情報を確認するのに手間がかかる
 sp_cycle_errorlog : エラーログのローテーション
 世代数は 6 ~ 99 まで変更可能
 SQL Server エージェントの実行ログ
 SQL Server エージェントジョブを実行することで各種ログが蓄積される
 メンテナンス プランのクリーンアップ用のタスクを利用
 メンテナンス クリーンアップタスク : メンテナンス プランのログの削除
 履歴 クリーンアップタスク : SQL Server エージェントジョブの実行履歴の削除
ログのメンテナンス
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~31
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~32
ログのメンテナンス
運用
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~33
データメンテナンス
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~34
 定期的なデータベースの断片化解消
 ページ密度 / データの連続性を効率的に処理ができる状態にする
 再構成 (REORGANIZE)
 オンラインで実行可能
 既存の領域を使用して、データの並び替えを実施
 再構築 (REBUILD)
 Enterprise Edition の場合のみオンラインで実行可能
 新規の領域を使用して、並び替え済みのデータを作成
 一般的なディスクアクセス指標
ディスクタイプ 速度の指標
磁気ディスク ミリセカンド
SSD マイクロセカンド
CPU / メモリ ナノセカンド
バックアップ
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~35
 完全/一括復旧モデルでも、初回の完全バックアップを取得するまではログは自動で切り捨て
られる
 検証時には早い段階で初回の完全バックアップを取得しておく
 バックアップチェーン (バックアップの連続性) を意識する
 臨時でバックアップを取得する場合は、COPY_ONLY を設定する
 BACKUP DATABASE master TO DISK=N'NUL' WITH COPY_ONLY
 破損しているデータベースのバックアップも破損している状態
 リストアしても破損している状態は変わらない
 破損していない状態のバックアップが重要
 破損ページはアクセスされるまで検出されない
 select * from msdb..suspect_pages
 DBCC CHECKDB WITH PHYSICAL_ONLY
 BACKUP DATABASE master TO DISK =N'NUL' WITH CHECKSUM
 SQL Server 2012 : トレースフラグ 3023
 SQL Server 2014 : backup checksum default オプション
 https://support.microsoft.com/en-us/kb/2656988
一般的なバックアップタクト
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~36
完全
バックアップ 1
ログ
バックアップ 2
差分
バックアップ 2
完全バックアップ 1
からの差分
差分
バックアップ 1
ログ
バックアップ 1
ログバックアップ 1
からの増分
完全
バックアップ 1
差分
バックアップ 1
差分
バックアップ 2
COPY_ONLY
完全バックアップ
完全バックアップ 1
からの差分
完全バックアップ 1
からの差分
臨時の完全
バックアップ
VSS によるバックアップ時の注意
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~37
 SQL Server は「SQL Server VSS Writer」(Microsoft SQL Server VSS Writer)により、
VSS と連携される
 Windows Server 2008 R2 では、「ベアメタル回復用」のバックアップで、「インスタ
ンス ルート ディレクトリ」のドライブが自動的に選択される
 データベースを配置している場合は注意
 VSS 完全バックアップ / VSS コピー バックアップ は SQL Server のバックアッ
プと連動している
 VSS 完全 バックアップ
 BACKUP DATABASE [master] TO VIRTUAL_DEVICE='{D8387608-3C42-45BA-97E2-7D6B12BF51C0}4'
WITH SNAPSHOT,BUFFERCOUNT=1,BLOCKSIZE=1024
 VSS コピー バックアップ
 BACKUP DATABASE [master] TO VIRTUAL_DEVICE='{0C3305B1-F63D-4443-812E-7E6B3E76F9C2}4'
WITH SNAPSHOT,BUFFERCOUNT=1,BLOCKSIZE=1024,COPY_ONLY
VSS によるバックアップ時の注意
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~38
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~39
破損 DB のバックアップ
VSS によるバックアップ
開発者への情報提供
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~40
 動的管理ビューの情報提供
 負荷の高いクエリの情報
 CPU / ディスクI/O / 実行時間の高いクエリ
 インデックスの使用状況
 データ件数の多いインデックスへのフルスキャン
 ロックの発生状況
 インデックス単位のロック発生状況
 blocked process threshold を使用したブロッキング情報
 拡張イベントの情報提供
 スロークエリーログ
 実行に特定の秒数以上かかったものをロギングして開発者に提供
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~41
スロークエリーログ
モニタリング
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~42
 パフォーマンスモニターを使用した各種情報の取得
 ログの収集とベースラインとの比較で利用する
 SQL Server Perfmon Counters of Interest を参考に考えると、取得項目の洗い出しをすること
ができる。
 SQL Server 2008 R2 がベースになっているが、SQL Server 2016 でも基本的な考えは同じ
 http://helsinki.sqlpass.org/LinkClick.aspx?fileticket=7Cp3Hv8n0EY%3D&tabid=5011
 Performance Analysis of Logs (PAL) Tool / SQL Nexus Tool / データコレクション
 パフォーマンスモニターのオプション
 https://technet.microsoft.com/en-us/magazine/ff723776.aspx
コマンド 内容
perfmon /report システム診断情報の収集
perfmon /sys /comp パフォーマンスモニターの比較
perfmon /rel 信頼性モニター
HKEY_LOCAL_MACHINESOFTWAREMicrosoftReliability AnalysisWMI : WMIEnable = 1
MicrosoftWindowsRACRacTask の有効化
https://support.microsoft.com/ja-jp/kb/983386
perfmon /res リソースモニター
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~43
モニタリング
SSMS を使用した情報の取得
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~44
 SSMS 標準レポート
 SSMS カスタムレポート
 Microsoft® SQL Server® 2012 Performance Dashboard Reports
http://www.microsoft.com/en-us/download/details.aspx?id=29063
 SSMSCustomReport
https://github.com/MasayukiOzawa/SSMSCustomReport
 sp_Blitz® – Free SQL Server Health Check Script
 http://www.brentozar.com/blitz/
 How StackOverflow Scales SQL Server
https://www.youtube.com/watch?v=4y9kjrVejOI
DEMO
2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~45
カスタムレポートによる情報可視化

Sql server 運用 101

  • 1.
    SQL Server 運用101 Masayuki Ozawa (@Masayuki_Ozawa)
  • 2.
    自己紹介 2015/10/24NAWA Tech ~気付けば3年目ですよ ~2  バイトに行くために歩いていたら、黒塗りの高級車に乗った、通りすがりの 「えろす師匠 (@ichi_sien a.k.a. えろす財閥総帥快楽亭えろす師匠ひさし胡麻油ビスコのりたま)」 に、 「おまえ、SQL Server触ったことあるんだろ。NAWA Tech で、SQL Server の 運用について、喋れや(゚Д゚)ゴルァ!! 」 と声をかけられたので、これからの生活を守るために、SQL Server とか よくわからないけど、僕には泣きながら首を縦に振るしかありませんでした。  「HDMI 経由で配信するから、VGA 接続のお前の持ってきた PC は使えない ぞ(゚Д゚)ゴルァ!! 」 って名古屋で言われたので、先程まで Azure 上にデモ環境作ってました。
  • 3.
    ちゃんとした自己紹介 2015/10/24NAWA Tech ~気付けば3年目ですよ ~3  関東で SQL Server を中心に Microsoft 製品を取り扱う案件に従事してい ます。  IT Professional (IT Pro) 系のインフラ案件)が中心  以前は SIer に勤めていましたが、数年前からフリーランスになりました。  SQL Server コミュニティ:SQLTO  Microsoft Azure コミュニティ : JAZUG  ブログ:SE の雑記  http://blog.engineer-memo.com  Twitter  @Masayuki_Ozawa
  • 4.
    101 (ワンオーワン) 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~4  カリスマトレーナー K 氏曰く  ちなみに、101というのは、USのテクニカルカンファレ ンスでよく見かける言葉で、基礎とか、「○○のいろ は」などの意味があります。  http://goo.gl/pq7GKw から抜粋  SQL Server の「構築」「設定」「運用」で、 意識しておきたいポイントをざっくりとご紹介
  • 5.
    構築 2015/10/24NAWA Tech ~気付けば3年目ですよ ~5
  • 6.
    インスタンスの構成 2015/10/24NAWA Tech ~気付けば3年目ですよ ~6
  • 7.
    インスタンスの構成 2015/10/24NAWA Tech ~気付けば3年目ですよ ~7  既定のインスタンス  一つのみ作成可能  コンピューター名で接続  デフォルトは TCP 1433 で接続  名前付きインスタンス  複数作成可能  コンピューター名インスタンス名で接続  デフォルトは動的ポート (サービスの起動ごとに変更される) で接続  特定のポート番号で起動したい場合はポートを固定化する  既定のインスタンス/名前付きインスタンスを、インストール後に変更 することはできない
  • 8.
    インスタンスの構成による接続の違い 2015/10/24NAWA Tech ~気付けば3年目ですよ ~8 コンピューター名で接続 TCP 1433 で接続 コンピューター名インスタンス名で接続 SQL Sever Browser ①UDP 1434 で接続 ②UDP1434 から受け取ったポートで接続 https://technet.microsoft.com/ja-jp/library/ms190204(v=sql.105).aspx
  • 9.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~9 SQL Server Browser の応答
  • 10.
    照合順序 2015/10/24NAWA Tech ~気付けば3年目ですよ ~10
  • 11.
    照合順序 2015/10/24NAWA Tech ~気付けば3年目ですよ ~11  照合順序  並び替え / 比較方法に関しての規則 (重みづけの設定)  非 Unicode 文字列のコードページ (Japanese : CP932 / Latin1 : CP1252)  https://technet.microsoft.com/ja-jp/library/ms186356(v=sql.105).aspx  https://msdn.microsoft.com/ja-jp/library/ms143726(v=sql.120).aspx  サーバー照合順序はインストール時にのみ設定可能  データベース名/ログイン名/一時テーブル/変数/カーソル等に影響  https://technet.microsoft.com/ja-jp/library/ms188686(v=sql.105).aspx  https://msdn.microsoft.com/ja-jp/library/ff929080(v=sql.120).aspx  製品によっては照合順序が限定されることもある  インストール後に設定を変更したい場合は、システムデータベースを再構築  https://msdn.microsoft.com/ja-jp/library/dd207003(v=sql.120).aspx  再構築をすると、ログイン/SQL Server エージェントジョブ/データベースのエントリ 情報等が初期化される
  • 12.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~12 照合順序と部分包含
  • 13.
    インストール ディレクトリ 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~13
  • 14.
    インストール ディレクトリ 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~14  インスタンス ルート ディレクトリ  SQL Server を動作させるためのプログラム群を格納  インストール後の変更はできない  Windows Server 2008 R2 では、ベアメタルバックアップ取得時に自動的に選択される  サービスのイメージパスのドライブが自動的に含まれるため  データ ルート ディレクトリ  ERRORLOG / デフォルトトレース等を格納  一部のファイルは移動することが可能だが、すべてを移動することは困難なため、ログを保存するドライブに指定がある場合 は、インストール時に指定  システム データベース ディレクトリはデータルートディレクトリを元に設定され変更できない  「インスタンスIDMSSQL ディレクトリ」は固定のため、変更することは出来ない  以下は変更することの難易度は高くない  システム データベース ディレクトリに格納されたシステムデータベース / tempdb  https://msdn.microsoft.com/ja-jp/library/ms345408(v=sql.120).aspx  ユーザー データベース ディレクトリ  ユーザー データベース ログ ディレクトリ  バックアップ ディレクトリ
  • 15.
    構成ファイル 2015/10/24NAWA Tech ~気付けば3年目ですよ ~15
  • 16.
    構成ファイル 2015/10/24NAWA Tech ~気付けば3年目ですよ ~16  SQL Server インストール時に選択したインストールパラメーターが、 構成ファイルとしてエクスポートされる。  他者がインストールした環境の、インストールパラメーターの確認  SQL Server のインストールを構成ファイルから実施することも可能  構成ファイルを使用した GUI / コマンドラインインストールが可能  複数の環境に同一パラメーターでインストールする場合に利用  https://msdn.microsoft.com/ja-jp/library/dd239405(v=sql.120).aspx  https://msdn.microsoft.com/ja-jp/library/ms144259(v=SQL.10).aspx
  • 17.
    ディスクレイアウト 2015/10/24NAWA Tech ~気付けば3年目ですよ ~17  ファイルに対してのアクセスパターン  データファイル : シーケンシャル / ランダム / Read : Write  ログファイル : シーケンシャル / Read : Write  tempdb : シーケンシャル / ランダム / Read : Write  システムデータベース (master / model /msdb) : 発生する I/O は低い  ドライブ文字  DBCC CHECKDB はドライブ文字毎に処理の内部リストを作成する  https://support.microsoft.com/ja-jp/kb/2634571  トレースフラグ 2549 を有効にすることで、各データベースファイルが一意のドライブ にあるとみるように変更することができる  追加したディスクをフォルダーにマウントして使用する場合などに利用できる
  • 18.
    設定 2015/10/24NAWA Tech ~気付けば3年目ですよ ~18
  • 19.
    SQL Server のサービスアカウント 2015/10/24NAWATech ~ 気付けば3年目ですよ ~19
  • 20.
    SQL Server のサービスアカウント 2015/10/24NAWATech ~ 気付けば3年目ですよ ~20  ボリュームの保守タスクを実行  データファイルの拡張が発生した際に、「0 初期化」を行わずに瞬時初期化を実施  データファイルの拡張を瞬時に完了することができる  リストア時にデータファイルの領域確保をする時にも有効  ログファイルは瞬時初期化が有効にならないため初期サイズ/拡張サイズを適切に設定  https://technet.microsoft.com/ja-jp/library/ms175935.aspx  メモリ内のページのロック  SQL Server が確保したバッファプールのメモリをページアウトの対象外にする  SQL Server を実行しているサーバー内でメモリを使用する他のアプリが実行されている場合 に、バッファプールを安定して確保することができる  「max server memory」の設定をしないと、確保可能なメモリを SQL Server がすべて 確保するため、「max server memory」と必ず併用  https://msdn.microsoft.com/ja-jp/library/ms190730(v=sql.120).aspx
  • 21.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~21 サービスアカウントの権限の確認
  • 22.
    SQL Server の設定 2015/10/24NAWATech ~ 気付けば3年目ですよ ~22
  • 23.
    SQL Server の設定 2015/10/24NAWATech ~ 気付けば3年目ですよ ~23  max server memory  SQL Server のバッファプールで確保するメモリの上限  デフォルトは 2TB に設定されている  max server memory の設定をしても、SQL Server のサービス起動時に上限までメモリ を確保するわけではない  サービス起動時に上限までメモリを確保させたい場合は追加オプションの設定が必要  https://msdn.microsoft.com/ja-jp/library/ms178067(v=sql.120).aspx  max degree of parallelism  並列処理を実行する際に使用する CPU コア数の制限  デフォルトは 0 で、最大 64 コアを使用して並列処理を実行する  1 を設定することで、並列クエリの実行を禁止することができるが、1 を設定するのは控えた ほうがよい (1 コアで発生させられる I/O の限界を考慮)  一般的には、CPU コア数の 1/2 ~1/4 / NUMA ノード内の CPU コア数を上限とする  https://msdn.microsoft.com/ja-jp/library/ms189094(v=sql.120).aspx
  • 24.
    tempdb の分割 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~24  データファイルを CPU コア数に応じて分割  分割数の例  データファイルのサイズと自動拡張サイズは全ファイル均等にする  データファイルは空きサイズに応じて使用頻度が変わるため、サイズに偏りが あると特定のファイルにアクセスが集中する  自動拡張されてもサービスの再起動後は初期サイズに戻る  ログファイルは、シーケンシャルに使用されるため分割による性能面での効果 はない 規模 CPU コア データファイル 小規模 4~8 4 データファイル 中規模 8~16 8~16 データファイル 大規模 16~32 16~32 データファイル 超大規模 32~256 32 データファイル
  • 25.
    tempdb の分割 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~25
  • 26.
    SQL Server 2016のインストール時の設定 2015/10/24NAWA Tech ~ 気付けば3年目ですよ ~26
  • 27.
    トレースフラグ 2015/10/24NAWA Tech ~気付けば3年目ですよ ~27 -- Session Level DBCC TRACEON (3226) DBCC TRACEOFF (3226) -- Global Level DBCC TRACEON (3226,-1) DBCC TRACEOFF (3226,-1) -- Status DBCC TRACESTATUS
  • 28.
    トレースフラグ 2015/10/24NAWA Tech ~気付けば3年目ですよ ~28  SQL Server の動作を変更するためのオプション  T1117  データファイルの自動拡張が発生した場合に、すべてのデータファイルを同時に拡張する  データファイルサイズの均等性を保つことができる  拡張サイズが大きい場合は瞬時初期化との併用必須  SQL Server 2016 CTP 2.4 では tempdb の同時拡張が実装されているような動作をしている  T1118  単一エクステントではなく、混合エクステントの割り当てで固定できる  アロケーションページ (GAM/SGAM/PFS) の競合 (PAGELATCH) の減少につながる  データベースファイル単位に一定間隔でアロケーションページが存在する  PFS : 8,088 ページ単位 (64MB 分) / GAM:SGAM : 511,000 ページ単位 (4GB 分)  T3226  バックアップのログ出力を抑制する  エラーについてはログに出力される  セッションレベルのトレースフラグでも設定可能  短い間隔でログを取得する場合、バックアップ取得のログ情報が増えすぎるのを抑える  https://msdn.microsoft.com/ja-jp/library/ms188396(v=sql.120).aspx
  • 29.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~29 トレースフラグの設定 (1117/ 3226)
  • 30.
    ログのメンテナンス 2015/10/24NAWA Tech ~気付けば3年目ですよ ~30  ERRORLOG  デフォルトは SQL Server のサービスが再起動され他タイミングで、6 世代  SQL Server が連続稼働していると一つの ERRORLOG に書き込まれ続けるため、 情報を確認するのに手間がかかる  sp_cycle_errorlog : エラーログのローテーション  世代数は 6 ~ 99 まで変更可能  SQL Server エージェントの実行ログ  SQL Server エージェントジョブを実行することで各種ログが蓄積される  メンテナンス プランのクリーンアップ用のタスクを利用  メンテナンス クリーンアップタスク : メンテナンス プランのログの削除  履歴 クリーンアップタスク : SQL Server エージェントジョブの実行履歴の削除
  • 31.
    ログのメンテナンス 2015/10/24NAWA Tech ~気付けば3年目ですよ ~31
  • 32.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~32 ログのメンテナンス
  • 33.
    運用 2015/10/24NAWA Tech ~気付けば3年目ですよ ~33
  • 34.
    データメンテナンス 2015/10/24NAWA Tech ~気付けば3年目ですよ ~34  定期的なデータベースの断片化解消  ページ密度 / データの連続性を効率的に処理ができる状態にする  再構成 (REORGANIZE)  オンラインで実行可能  既存の領域を使用して、データの並び替えを実施  再構築 (REBUILD)  Enterprise Edition の場合のみオンラインで実行可能  新規の領域を使用して、並び替え済みのデータを作成  一般的なディスクアクセス指標 ディスクタイプ 速度の指標 磁気ディスク ミリセカンド SSD マイクロセカンド CPU / メモリ ナノセカンド
  • 35.
    バックアップ 2015/10/24NAWA Tech ~気付けば3年目ですよ ~35  完全/一括復旧モデルでも、初回の完全バックアップを取得するまではログは自動で切り捨て られる  検証時には早い段階で初回の完全バックアップを取得しておく  バックアップチェーン (バックアップの連続性) を意識する  臨時でバックアップを取得する場合は、COPY_ONLY を設定する  BACKUP DATABASE master TO DISK=N'NUL' WITH COPY_ONLY  破損しているデータベースのバックアップも破損している状態  リストアしても破損している状態は変わらない  破損していない状態のバックアップが重要  破損ページはアクセスされるまで検出されない  select * from msdb..suspect_pages  DBCC CHECKDB WITH PHYSICAL_ONLY  BACKUP DATABASE master TO DISK =N'NUL' WITH CHECKSUM  SQL Server 2012 : トレースフラグ 3023  SQL Server 2014 : backup checksum default オプション  https://support.microsoft.com/en-us/kb/2656988
  • 36.
    一般的なバックアップタクト 2015/10/24NAWA Tech ~気付けば3年目ですよ ~36 完全 バックアップ 1 ログ バックアップ 2 差分 バックアップ 2 完全バックアップ 1 からの差分 差分 バックアップ 1 ログ バックアップ 1 ログバックアップ 1 からの増分 完全 バックアップ 1 差分 バックアップ 1 差分 バックアップ 2 COPY_ONLY 完全バックアップ 完全バックアップ 1 からの差分 完全バックアップ 1 からの差分 臨時の完全 バックアップ
  • 37.
    VSS によるバックアップ時の注意 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~37  SQL Server は「SQL Server VSS Writer」(Microsoft SQL Server VSS Writer)により、 VSS と連携される  Windows Server 2008 R2 では、「ベアメタル回復用」のバックアップで、「インスタ ンス ルート ディレクトリ」のドライブが自動的に選択される  データベースを配置している場合は注意  VSS 完全バックアップ / VSS コピー バックアップ は SQL Server のバックアッ プと連動している  VSS 完全 バックアップ  BACKUP DATABASE [master] TO VIRTUAL_DEVICE='{D8387608-3C42-45BA-97E2-7D6B12BF51C0}4' WITH SNAPSHOT,BUFFERCOUNT=1,BLOCKSIZE=1024  VSS コピー バックアップ  BACKUP DATABASE [master] TO VIRTUAL_DEVICE='{0C3305B1-F63D-4443-812E-7E6B3E76F9C2}4' WITH SNAPSHOT,BUFFERCOUNT=1,BLOCKSIZE=1024,COPY_ONLY
  • 38.
  • 39.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~39 破損 DB のバックアップ VSS によるバックアップ
  • 40.
    開発者への情報提供 2015/10/24NAWA Tech ~気付けば3年目ですよ ~40  動的管理ビューの情報提供  負荷の高いクエリの情報  CPU / ディスクI/O / 実行時間の高いクエリ  インデックスの使用状況  データ件数の多いインデックスへのフルスキャン  ロックの発生状況  インデックス単位のロック発生状況  blocked process threshold を使用したブロッキング情報  拡張イベントの情報提供  スロークエリーログ  実行に特定の秒数以上かかったものをロギングして開発者に提供
  • 41.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~41 スロークエリーログ
  • 42.
    モニタリング 2015/10/24NAWA Tech ~気付けば3年目ですよ ~42  パフォーマンスモニターを使用した各種情報の取得  ログの収集とベースラインとの比較で利用する  SQL Server Perfmon Counters of Interest を参考に考えると、取得項目の洗い出しをすること ができる。  SQL Server 2008 R2 がベースになっているが、SQL Server 2016 でも基本的な考えは同じ  http://helsinki.sqlpass.org/LinkClick.aspx?fileticket=7Cp3Hv8n0EY%3D&tabid=5011  Performance Analysis of Logs (PAL) Tool / SQL Nexus Tool / データコレクション  パフォーマンスモニターのオプション  https://technet.microsoft.com/en-us/magazine/ff723776.aspx コマンド 内容 perfmon /report システム診断情報の収集 perfmon /sys /comp パフォーマンスモニターの比較 perfmon /rel 信頼性モニター HKEY_LOCAL_MACHINESOFTWAREMicrosoftReliability AnalysisWMI : WMIEnable = 1 MicrosoftWindowsRACRacTask の有効化 https://support.microsoft.com/ja-jp/kb/983386 perfmon /res リソースモニター
  • 43.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~43 モニタリング
  • 44.
    SSMS を使用した情報の取得 2015/10/24NAWA Tech~ 気付けば3年目ですよ ~44  SSMS 標準レポート  SSMS カスタムレポート  Microsoft® SQL Server® 2012 Performance Dashboard Reports http://www.microsoft.com/en-us/download/details.aspx?id=29063  SSMSCustomReport https://github.com/MasayukiOzawa/SSMSCustomReport  sp_Blitz® – Free SQL Server Health Check Script  http://www.brentozar.com/blitz/  How StackOverflow Scales SQL Server https://www.youtube.com/watch?v=4y9kjrVejOI
  • 45.
    DEMO 2015/10/24NAWA Tech ~気付けば3年目ですよ ~45 カスタムレポートによる情報可視化

Editor's Notes

  • #24  max server memory TF834 を設定することでサービス起動時にメモリを確保する動作に変更することができるが、連続した領域を確保する必要があるため、メモリが断片化していると起動できないことがある