SQL Server 構築/運用 Tips
Masayuki Ozawa
自己紹介
System Center User Group Japan 12第 回勉強会2
 フリーランスエンジニアとして SQL Server の案件を中心
に従事しています
 案件等で協力できることがありましたらお声掛けいただけると幸いです
 「SQL Server 現状診断」による SQL Server 稼働状況の報告書作成
 SQL Server に関してのオンサイト / オフサイトでの技術支援
 コミュニティやブログで SQL Server の情報を発信
 コミュニティ活動
 SQL Server : SQLTO (http://sqlto.net)
 Azure : JAZUG (http://r.jazug.jp/)
 ブログ : SE の雑記 (http://blog.engineer-memo.com)
 Twitter : @Masayuki_Ozawa
2015/04/18
本日の Agenda
2015/04/18System Center User Group Japan 12第 回勉強会3
シングルインスタンスの基本的な構成
を例とした Tips
 クラスター等の環境は対象外です
SQL Server 構築 Tips
SQL Server 運用 Tips
SQL Server 構築 Tips
2015/04/18System Center User Group Japan 12第 回勉強会4
使用する SQL Server の言語
2015/04/18System Center User Group Japan 12第 回勉強会5
 インストールする SQL Server の言語
 英語版はすべての言語でインストールが可能
 それ以外の言語
 ローカライズされた OS (例 : 日本語版)
 MUI (例 : 日本語言語パック) をインストールした英語版 OS
 SQL Server の言語の差による機能差は基本的にないが…
 CU で追加された SSMS の機能が英語版でないと動作しないケースが
稀にある
 例 : SQL Server 2014 CU5 の SQL Database v12 の GUI 対応
 SQL Server のローカル言語版
https://msdn.microsoft.com/ja-jp/library/ee210665.aspx
インストールパラメーター
2015/04/18System Center User Group Japan 12第 回勉強会6
 インストール時には構成ファイル (ConfigurationFile.ini)が内部で自動作成され
ている
 C:¥Program Files¥Microsoft SQL Server¥120¥Setup Bootstrap¥Log
 無応答セットアップ / 他の環境でどのようにインストールされたかを確認す
る場合に利用できる
インストール時に意識しておきたいポイント
2015/04/18System Center User Group Japan 12第 回勉強会7
 .NET Framework 3.5
 インターネット非接続環境では、OS インストールメディアを代替ソースパスに指定
 インストールパス
 インスタンス ルート ディレクトリ : SQL Server のバイナリをインストールするディレクトリ
 バージョンによっては、ベアメタル回復用のバックアップで上記ディレクトリが含まれる
 共有機能ディレクトリ : SSMS 等の共有機能のバイナリをインストールするディレクトリ
 データ ルート ディレクトリ : システムデータベース / ERRORLOG / SQL Server Agent ログが出力される
 インスタンス
 既定のインスタンス (TCP:1433)
 名前付きインスタンス (動的ポート)
 SQL Server Browser サービスは動的ポートを解決するためのサービス (UDP:1434)
 照合順序
 製品のよっては特定の照合順序を使用する必要がある
 日本語版 OS (システムロケール : 日本語) のデフォルトは Japanese_CI_AS
 英語版 OS のデフォルトは SQL_Latin1_General_CP1_CI_AS
照合順序
2015/04/18System Center User Group Japan 12第 回勉強会8
 内容の照合 (文字列の比較 / ソート) や非 Unicode データの文字コードを指定する設定
 照合順序が異なると列の評価 (結合等)でエラーとなるケースがある
 サーバー (インスタンス) レベルの照合順序
 インストール時にのみ設定可能
 変更するためにはシステムデータベースの再構築が必要
 システムデータベース (master/model/msdb/tempdb) の照合順序に利用される
 サーバーの照合順序の設定または変更
 https://technet.microsoft.com/ja-jp/library/ms179254(v=sql.120).aspx
 データベースレベルの照合順序
 ユーザーデータベース個別に設定が可能
 SQL Server 2012 以降は包含データベースにより、一時オブジェクトを tempdb の照合順序ではなく
ユーザーデータベースの照合順序で利用可能
 列レベルの照合順序
 特定の列のみ大文字 / 小文字を区別するというような指定が可能
照合順序の影響の解消
2015/04/18System Center User Group Japan 12第 回勉強会9
 SQL Server 2012 以降では、包含データベースを利用することで、
インストール時の照合順序の影響を緩和
 包含データベースの照合順序
 https://msdn.microsoft.com/ja-jp/library/ff929080.aspx
アイテム 非包含データベース 包含データベース
ユーザー データ (既定値) DATABASE_DEFAULT DATABASE_DEFAULT
一時データ (既定値) TempDB の照合順序 DATABASE_DEFAULT
メタデータ DATABASE_DEFAULT / CATALOG_DEFAULT CATALOG_DEFAULT
一時的なメタデータ tempdb の照合順序 CATALOG_DEFAULT
変数 インスタンスの照合順序 CATALOG_DEFAULT
Goto ラベル インスタンスの照合順序 CATALOG_DEFAULT
カーソル名 インスタンスの照合順序 CATALOG_DEFAULT
累積修正プログラム
2015/04/18System Center User Group Japan 12第 回勉強会10
 2 か月単位で累積修正プログラム (Cumulative Update) が提供されている
 構築時に、最新の CU を適用するかを検討する (4/16 時点の最新)
 SQL Server 2014 SP1 ( Non SP の CU1 ~ CU5 の修正含む)
 SQL Server 2014 CU6
 SQL Server 2012 SP2 CU5
 SQL Release Services Blog
 http://blogs.msdn.com/b/sqlreleaseservices/
 技術情報
 SQL Server 2012
 Non SP : KB2692828 / SP1 : KB2772858 / SP2 : 2983249
 SQL Server 2014
 Non SP / SP1 : KB2936603
 英語版で確認しないと最新の修正プログラムが記載されていないことがあるので注意
ディスク構成
2015/04/18System Center User Group Japan 12第 回勉強会11
 高負荷な SQL Server ではディスク構成も検討する
 パターン 1
 E ドライブ : システムデータベース + ユーザーデータベース (データファイル)
 F ドライブ : ユーザーデータベース (ログファイル)
 パターン 2
 F ドライブ : システムデータベース
 F ドライブ : ユーザーデータベース (データファイル)
 G ドライブ : ユーザーデータベース (ログファイル)
 パターン 3
 E ドライブ : システムデータベース
 F ドライブ : tempdb
 G ドライブ : ユーザーデータベース (データファイル)
 H ドライブ : ユーザーデータベース (ログファイル)
ディスク性能の考慮の例
2015/04/18System Center User Group Japan 12第 回勉強会12
 SQL Database を例とした性能の考慮
 1 セッションで、連続した 10,000 件の単純 INSERT
 この時のトランザクションログの書き込み待ちの状態
DTU waiting_tasks_count wait_time_ms max_wait_time_ms signal_wait_time_ms 平均 処理時間
Basic 5 10,010 70,845 6,144 449 7.1 ミリ秒 1:13
S0 10 10,028 58,606 452 495 5.8 ミリ秒 1:03
S1 20 10,116 62,560 4,504 842 6.1 ミリ秒 1:03
S2 50 10,039 74,650 1,107 1838 7.4 ミリ秒 1:16
S3 100 10,010 65,998 1,513 414 6.6 ミリ秒 1:08
P1 100 47 146 268 4 - 0:18
P2 200 127 194 125 38 - 0:26
P3 1,000 31 98 8 2 - 0:22
ディスクの設定
2015/04/18System Center User Group Japan 12第 回勉強会13
 アロケーション ユニット サイズの推奨は 64KB
 fsutil fsinfo ntfsinfo <ドライブレター>
 OLTP ではストライプサイズ 64KB / DWH 256KB を推奨
 Azure Virtual Machines における SQL Server のパフォーマンスに関するベスト プラクティス
 https://msdn.microsoft.com/ja-jp/library/azure/dn133149.aspx
SQL Server の設定
2015/04/18System Center User Group Japan 12第 回勉強会14
 細かなパラメーターチューニングをしなくても、ある
程度動作する
 そういう製品思想なので細かなパラメーター設定をしなく
てもある程度の性能で動作する
 一般的に変更する設定
 ローカル セキュリティー ポリシー (secpol.msc)
 ユーザー権利の割り当て
 SQL Server サーバー構成オプション
 トレースフラグ
DEMO
2015/04/18System Center User Group Japan 12第 回勉強会15
ローカルセキュリティポリシー
トレーフラグの設定
サービスアカウントの変更
2015/04/18System Center User Group Japan 12第 回勉強会16
 サービスアカウントは必ずSQL Server 構成マネージャーから変更
 MMC のサービス (Services.msc) からは実施しない
 SQL Server 構成マネージャーから変更しないと、サービスアカウント
に適切な権限が付与されず、サービスが正常に起動しない恐れがある
 SQL Server のサービス開始アカウントの変更 (SQL Server 構成マネージャー)
 https://msdn.microsoft.com/ja-jp/library/ms345578.aspx
 SQL Server 2000 の SQL Enterprise Manager または SQL Server 2005 の SQL
Server 構成マネージャを使用せずに SQL Server または SQL Server エージェン
ト サービスのアカウントを変更する方法
 https://support.microsoft.com/en-us/kb/283811/ja
サーバー名の変更
2015/04/18System Center User Group Japan 12第 回勉強会17
 SQL Server では内部にサーバー名を保持しており、OS のサーバー名を
変更する場合は SQL Server としてもサーバー名を変更する必要がある
sp_dropserver <old_name>;
GO
sp_addserver <new_name>, local;
GO
 SQL Server のスタンドアロン インスタンスをホストするコンピューターの名前変更
 https://technet.microsoft.com/ja-jp/library/ms143799.aspx
SQL Server 運用 Tips
2015/04/18System Center User Group Japan 12第 回勉強会18
通常運用
2015/04/18System Center User Group Japan 12第 回勉強会19
起動
バックアップ
データメンテナンス
監視
起動
2015/04/18System Center User Group Japan 12第 回勉強会20
 正常に起動しない場合は、sqlservr.exe を最小構成オプション (-f) を使用
して起動できるかを確認
 データベース エンジン サービスのスタートアップ オプション
https://msdn.microsoft.com/ja-jp/library/ms190737.aspx
 SQL Server のインスタンス (sqlservr.exe) を起動する方法
https://technet.microsoft.com/ja-jp/library/ms180965.aspx
 ERRORLOG を確認することで起動時のログを確認することができる
DEMO
2015/04/18System Center User Group Japan 12第 回勉強会21
コマンドラインからの起動
バックアップ
2015/04/18System Center User Group Japan 12第 回勉強会22
 復旧モデルに応じて適切なバックアップを設定する
 完全と一括ログを使用する場合、定期的なログバックアップは必須
 定期的なログバックアップを行わないとログファイルが肥大化する
 初回の完全バックアップ以降にログが蓄積されていくので検証時は注意
 本番環境での単純での運用は必ずしも悪いことではない
 バックアップ取得時点に復元できればよいのであれば単純で運用可能
復旧モデル 完全バックアップ 差分バックアップ ログバックアップ
完全 ○ ○ ○
一括ログ ○ ○ ○
単純 ○ ○ -
DEMO
2015/04/18System Center User Group Japan 12第 回勉強会23
初回バックアップと復旧モデル
バックアップ間隔の例
2015/04/18System Center User Group Japan 12第 回勉強会24
 パターン 1
 完全バックアップ : 毎週 1 回
 差分バックアップ : 完全バックアップを取得する曜日以外
 ログバックアップ : 1 時間間隔
 パターン 2
 完全バックアップ : 毎日 1 回
 ログバックアップ : 1 時間間隔
 パターン 3
 完全バックアップ : 毎日 1 回
 パターン 3 は単純を使用している場合のみ適用可能
臨時バックアップの取得
2015/04/18System Center User Group Japan 12第 回勉強会25
 バックアップチェーンを崩さないようにバックアップを取得
 COPY_ONLY バックアップ を使用することで、臨時バックアップを取得
 コピーのみのバックアップ (SQL Server)
 https://msdn.microsoft.com/ja-jp/library/ms191495.aspx
完全バックアップ
差分バックアップ
差分バックアップ
臨時バックアップ
バックアップ圧縮の利用
2015/04/18System Center User Group Japan 12第 回勉強会26
 SQL Server 2008 R2 以降は Standard Edition でバックアップ圧縮を利用
することが可能
 バックアップファイルのサイズ削減
 バックアップ時間の削減
 バックアップ中の CPU 使用率の上昇
 デフォルトの設定では明示的に圧縮を指定する必要がある
データメンテナンス
2015/04/18System Center User Group Japan 12第 回勉強会27
 インデックスの断片化解消
 再構成 : REORGANIZE
 オンラインで実施可能
 既存のデータ領域を用いてデータを整列
 再構築 : REBUILD
 Enterprise Edition の場合はオンラインで実施可能
 それ以外のエディションでは再構築中はオフラインとなる
 新規のデータ領域に整列したデータを作成
 Extent Scan Fragmentation の解消にもつながる
 インデックスがどれくらいの期間で断片化するかを把握
 例) 30 分で断片化するインデックスを 1 時間かけて解消する意味はあるか
データメンテナンス
2015/04/18System Center User Group Japan 12第 回勉強会28
 統計情報
 適切なクエリの実行プランを生成するためには、最新のデータを使用して十分
なデータのサンプリングでの、統計情報の作成が必要となる
 インデックスの再構築 (REBUILD) 時には 100% のサンプリングで統計情報が作
成される
 手動による統計情報の更新時には WITH FULLSCAN を使用しないと一定のサン
プリングによる統計情報の作成となるので注意
 UPDATE STATISTICS <テーブル名>(<インデックス名>) WITH FULLSCAN
 EXEC sp_updatestats
 統計情報のサンプリングの確認
 DBCC SHOW_STATISTICS ('<テーブル名>', '<インデックス名>')
DEMO
2015/04/18System Center User Group Japan 12第 回勉強会29
断片化の解消と統計情報の更新
アプリケーション観点の情報取得 (スロークエリ)
メモリ使用量についての考慮
2015/04/18System Center User Group Japan 12第 回勉強会30
 よくある監視
 メモリの使用量が 90% を超えたら、監視でアラートを投げる
 その監視、データベースサーバーでも有益ですか??
 Max Server Memory を設定して SQL Server のメモリ割り当ての上限を指定
 サーバー メモリに関するサーバー構成オプション
 https://msdn.microsoft.com/ja-jp/library/ms178067.aspx
 データベースサーバーは可能な限りメモリにキャッシュする
 これを考慮して、メモリ使用量の監視を行う
 メモリ使用量が閾値を超えた→ さて、何をしましょう…。
ポート / サービス 監視
2015/04/18System Center User Group Japan 12第 回勉強会31
 ポート監視
 既定のインスタンス : TCP 1433
 TCP 1434 (データベース管理者用の診断接続 :DAC)
 名前付きインスタンス : 動的ポート (起動のたびにポートが変わる)
 SQL Server Browser (UDP 1434) は名前付きインスタンスのポート番号を解決するためのサー
ビスであるため、既定のインスタンス / 名前付きインスタンスをポートを固定して、ポート
番号指定で接続する場合は起動していなくても影響はない
 サービス監視
 既定のインスタンス : MSSQLSERVER
 名前付きインスタンス : MSSQL$<インスタンス名>
 プロセスとしてはどちらも sqlservr.exe
 可能であればサービスの正常起動の確認
 例) SELECT 1 を定期的に実行
ERRORLOG
2015/04/18System Center User Group Japan 12第 回勉強会32
 デフォルトでは 6 世代分作成される
 SQL Server のサービスの起動時にローテーションされる
 長期間起動しているサーバーでは ERRORLOG ファイルが肥大化する
 世代数は最大で 99 まで変更可能
 手動でローテーションすることが可能
 sp_cycle_errorlog (Transact-SQL)
https://msdn.microsoft.com/ja-jp/library/ms182512.aspx
 SQL Server のエラー ログの数を増やす方法
 https://support.microsoft.com/en-us/kb/196909/ja
メンテナンスジョブのクリーンアップ
2015/04/18System Center User Group Japan 12第 回勉強会33
 以下の情報のクリーンアップを検討する
 バックアップ情報
 SQL Server エージェントジョブ履歴
 メンテナンスタスクのログファイル
 メンテナンスプランの履歴 クリーンアップ タスク / メンテナンス クリーン
アップ タスクを有効に活用する
 履歴 クリーンアップ タスク
 バックアップおよび復元の履歴
 SQL Server エージェント ジョブ履歴
 メンテナンス プランの履歴
 メンテナンス クリーンアップ タスク
 バックアップファイル
 メンテナンス プラン テキスト レポート
まとめ
2015/04/18System Center User Group Japan 12第 回勉強会34
 構築
 構築時にしか設定できない設定できない項目を把握
 インスタンスレベルの照合順序
 ディスクのアロケーションユニットサイズ
 サービスの再起動を伴う設定かどうかを考慮
 運用
 復旧モデルに応じた適切なバックアップ
 データメンテナンスの必要性
 目的に適した監視が行える設定となっているか

Sql server 構築 運用 tips

  • 1.
    SQL Server 構築/運用Tips Masayuki Ozawa
  • 2.
    自己紹介 System Center UserGroup Japan 12第 回勉強会2  フリーランスエンジニアとして SQL Server の案件を中心 に従事しています  案件等で協力できることがありましたらお声掛けいただけると幸いです  「SQL Server 現状診断」による SQL Server 稼働状況の報告書作成  SQL Server に関してのオンサイト / オフサイトでの技術支援  コミュニティやブログで SQL Server の情報を発信  コミュニティ活動  SQL Server : SQLTO (http://sqlto.net)  Azure : JAZUG (http://r.jazug.jp/)  ブログ : SE の雑記 (http://blog.engineer-memo.com)  Twitter : @Masayuki_Ozawa 2015/04/18
  • 3.
    本日の Agenda 2015/04/18System CenterUser Group Japan 12第 回勉強会3 シングルインスタンスの基本的な構成 を例とした Tips  クラスター等の環境は対象外です SQL Server 構築 Tips SQL Server 運用 Tips
  • 4.
    SQL Server 構築Tips 2015/04/18System Center User Group Japan 12第 回勉強会4
  • 5.
    使用する SQL Serverの言語 2015/04/18System Center User Group Japan 12第 回勉強会5  インストールする SQL Server の言語  英語版はすべての言語でインストールが可能  それ以外の言語  ローカライズされた OS (例 : 日本語版)  MUI (例 : 日本語言語パック) をインストールした英語版 OS  SQL Server の言語の差による機能差は基本的にないが…  CU で追加された SSMS の機能が英語版でないと動作しないケースが 稀にある  例 : SQL Server 2014 CU5 の SQL Database v12 の GUI 対応  SQL Server のローカル言語版 https://msdn.microsoft.com/ja-jp/library/ee210665.aspx
  • 6.
    インストールパラメーター 2015/04/18System Center UserGroup Japan 12第 回勉強会6  インストール時には構成ファイル (ConfigurationFile.ini)が内部で自動作成され ている  C:¥Program Files¥Microsoft SQL Server¥120¥Setup Bootstrap¥Log  無応答セットアップ / 他の環境でどのようにインストールされたかを確認す る場合に利用できる
  • 7.
    インストール時に意識しておきたいポイント 2015/04/18System Center UserGroup Japan 12第 回勉強会7  .NET Framework 3.5  インターネット非接続環境では、OS インストールメディアを代替ソースパスに指定  インストールパス  インスタンス ルート ディレクトリ : SQL Server のバイナリをインストールするディレクトリ  バージョンによっては、ベアメタル回復用のバックアップで上記ディレクトリが含まれる  共有機能ディレクトリ : SSMS 等の共有機能のバイナリをインストールするディレクトリ  データ ルート ディレクトリ : システムデータベース / ERRORLOG / SQL Server Agent ログが出力される  インスタンス  既定のインスタンス (TCP:1433)  名前付きインスタンス (動的ポート)  SQL Server Browser サービスは動的ポートを解決するためのサービス (UDP:1434)  照合順序  製品のよっては特定の照合順序を使用する必要がある  日本語版 OS (システムロケール : 日本語) のデフォルトは Japanese_CI_AS  英語版 OS のデフォルトは SQL_Latin1_General_CP1_CI_AS
  • 8.
    照合順序 2015/04/18System Center UserGroup Japan 12第 回勉強会8  内容の照合 (文字列の比較 / ソート) や非 Unicode データの文字コードを指定する設定  照合順序が異なると列の評価 (結合等)でエラーとなるケースがある  サーバー (インスタンス) レベルの照合順序  インストール時にのみ設定可能  変更するためにはシステムデータベースの再構築が必要  システムデータベース (master/model/msdb/tempdb) の照合順序に利用される  サーバーの照合順序の設定または変更  https://technet.microsoft.com/ja-jp/library/ms179254(v=sql.120).aspx  データベースレベルの照合順序  ユーザーデータベース個別に設定が可能  SQL Server 2012 以降は包含データベースにより、一時オブジェクトを tempdb の照合順序ではなく ユーザーデータベースの照合順序で利用可能  列レベルの照合順序  特定の列のみ大文字 / 小文字を区別するというような指定が可能
  • 9.
    照合順序の影響の解消 2015/04/18System Center UserGroup Japan 12第 回勉強会9  SQL Server 2012 以降では、包含データベースを利用することで、 インストール時の照合順序の影響を緩和  包含データベースの照合順序  https://msdn.microsoft.com/ja-jp/library/ff929080.aspx アイテム 非包含データベース 包含データベース ユーザー データ (既定値) DATABASE_DEFAULT DATABASE_DEFAULT 一時データ (既定値) TempDB の照合順序 DATABASE_DEFAULT メタデータ DATABASE_DEFAULT / CATALOG_DEFAULT CATALOG_DEFAULT 一時的なメタデータ tempdb の照合順序 CATALOG_DEFAULT 変数 インスタンスの照合順序 CATALOG_DEFAULT Goto ラベル インスタンスの照合順序 CATALOG_DEFAULT カーソル名 インスタンスの照合順序 CATALOG_DEFAULT
  • 10.
    累積修正プログラム 2015/04/18System Center UserGroup Japan 12第 回勉強会10  2 か月単位で累積修正プログラム (Cumulative Update) が提供されている  構築時に、最新の CU を適用するかを検討する (4/16 時点の最新)  SQL Server 2014 SP1 ( Non SP の CU1 ~ CU5 の修正含む)  SQL Server 2014 CU6  SQL Server 2012 SP2 CU5  SQL Release Services Blog  http://blogs.msdn.com/b/sqlreleaseservices/  技術情報  SQL Server 2012  Non SP : KB2692828 / SP1 : KB2772858 / SP2 : 2983249  SQL Server 2014  Non SP / SP1 : KB2936603  英語版で確認しないと最新の修正プログラムが記載されていないことがあるので注意
  • 11.
    ディスク構成 2015/04/18System Center UserGroup Japan 12第 回勉強会11  高負荷な SQL Server ではディスク構成も検討する  パターン 1  E ドライブ : システムデータベース + ユーザーデータベース (データファイル)  F ドライブ : ユーザーデータベース (ログファイル)  パターン 2  F ドライブ : システムデータベース  F ドライブ : ユーザーデータベース (データファイル)  G ドライブ : ユーザーデータベース (ログファイル)  パターン 3  E ドライブ : システムデータベース  F ドライブ : tempdb  G ドライブ : ユーザーデータベース (データファイル)  H ドライブ : ユーザーデータベース (ログファイル)
  • 12.
    ディスク性能の考慮の例 2015/04/18System Center UserGroup Japan 12第 回勉強会12  SQL Database を例とした性能の考慮  1 セッションで、連続した 10,000 件の単純 INSERT  この時のトランザクションログの書き込み待ちの状態 DTU waiting_tasks_count wait_time_ms max_wait_time_ms signal_wait_time_ms 平均 処理時間 Basic 5 10,010 70,845 6,144 449 7.1 ミリ秒 1:13 S0 10 10,028 58,606 452 495 5.8 ミリ秒 1:03 S1 20 10,116 62,560 4,504 842 6.1 ミリ秒 1:03 S2 50 10,039 74,650 1,107 1838 7.4 ミリ秒 1:16 S3 100 10,010 65,998 1,513 414 6.6 ミリ秒 1:08 P1 100 47 146 268 4 - 0:18 P2 200 127 194 125 38 - 0:26 P3 1,000 31 98 8 2 - 0:22
  • 13.
    ディスクの設定 2015/04/18System Center UserGroup Japan 12第 回勉強会13  アロケーション ユニット サイズの推奨は 64KB  fsutil fsinfo ntfsinfo <ドライブレター>  OLTP ではストライプサイズ 64KB / DWH 256KB を推奨  Azure Virtual Machines における SQL Server のパフォーマンスに関するベスト プラクティス  https://msdn.microsoft.com/ja-jp/library/azure/dn133149.aspx
  • 14.
    SQL Server の設定 2015/04/18SystemCenter User Group Japan 12第 回勉強会14  細かなパラメーターチューニングをしなくても、ある 程度動作する  そういう製品思想なので細かなパラメーター設定をしなく てもある程度の性能で動作する  一般的に変更する設定  ローカル セキュリティー ポリシー (secpol.msc)  ユーザー権利の割り当て  SQL Server サーバー構成オプション  トレースフラグ
  • 15.
    DEMO 2015/04/18System Center UserGroup Japan 12第 回勉強会15 ローカルセキュリティポリシー トレーフラグの設定
  • 16.
    サービスアカウントの変更 2015/04/18System Center UserGroup Japan 12第 回勉強会16  サービスアカウントは必ずSQL Server 構成マネージャーから変更  MMC のサービス (Services.msc) からは実施しない  SQL Server 構成マネージャーから変更しないと、サービスアカウント に適切な権限が付与されず、サービスが正常に起動しない恐れがある  SQL Server のサービス開始アカウントの変更 (SQL Server 構成マネージャー)  https://msdn.microsoft.com/ja-jp/library/ms345578.aspx  SQL Server 2000 の SQL Enterprise Manager または SQL Server 2005 の SQL Server 構成マネージャを使用せずに SQL Server または SQL Server エージェン ト サービスのアカウントを変更する方法  https://support.microsoft.com/en-us/kb/283811/ja
  • 17.
    サーバー名の変更 2015/04/18System Center UserGroup Japan 12第 回勉強会17  SQL Server では内部にサーバー名を保持しており、OS のサーバー名を 変更する場合は SQL Server としてもサーバー名を変更する必要がある sp_dropserver <old_name>; GO sp_addserver <new_name>, local; GO  SQL Server のスタンドアロン インスタンスをホストするコンピューターの名前変更  https://technet.microsoft.com/ja-jp/library/ms143799.aspx
  • 18.
    SQL Server 運用Tips 2015/04/18System Center User Group Japan 12第 回勉強会18
  • 19.
    通常運用 2015/04/18System Center UserGroup Japan 12第 回勉強会19 起動 バックアップ データメンテナンス 監視
  • 20.
    起動 2015/04/18System Center UserGroup Japan 12第 回勉強会20  正常に起動しない場合は、sqlservr.exe を最小構成オプション (-f) を使用 して起動できるかを確認  データベース エンジン サービスのスタートアップ オプション https://msdn.microsoft.com/ja-jp/library/ms190737.aspx  SQL Server のインスタンス (sqlservr.exe) を起動する方法 https://technet.microsoft.com/ja-jp/library/ms180965.aspx  ERRORLOG を確認することで起動時のログを確認することができる
  • 21.
    DEMO 2015/04/18System Center UserGroup Japan 12第 回勉強会21 コマンドラインからの起動
  • 22.
    バックアップ 2015/04/18System Center UserGroup Japan 12第 回勉強会22  復旧モデルに応じて適切なバックアップを設定する  完全と一括ログを使用する場合、定期的なログバックアップは必須  定期的なログバックアップを行わないとログファイルが肥大化する  初回の完全バックアップ以降にログが蓄積されていくので検証時は注意  本番環境での単純での運用は必ずしも悪いことではない  バックアップ取得時点に復元できればよいのであれば単純で運用可能 復旧モデル 完全バックアップ 差分バックアップ ログバックアップ 完全 ○ ○ ○ 一括ログ ○ ○ ○ 単純 ○ ○ -
  • 23.
    DEMO 2015/04/18System Center UserGroup Japan 12第 回勉強会23 初回バックアップと復旧モデル
  • 24.
    バックアップ間隔の例 2015/04/18System Center UserGroup Japan 12第 回勉強会24  パターン 1  完全バックアップ : 毎週 1 回  差分バックアップ : 完全バックアップを取得する曜日以外  ログバックアップ : 1 時間間隔  パターン 2  完全バックアップ : 毎日 1 回  ログバックアップ : 1 時間間隔  パターン 3  完全バックアップ : 毎日 1 回  パターン 3 は単純を使用している場合のみ適用可能
  • 25.
    臨時バックアップの取得 2015/04/18System Center UserGroup Japan 12第 回勉強会25  バックアップチェーンを崩さないようにバックアップを取得  COPY_ONLY バックアップ を使用することで、臨時バックアップを取得  コピーのみのバックアップ (SQL Server)  https://msdn.microsoft.com/ja-jp/library/ms191495.aspx 完全バックアップ 差分バックアップ 差分バックアップ 臨時バックアップ
  • 26.
    バックアップ圧縮の利用 2015/04/18System Center UserGroup Japan 12第 回勉強会26  SQL Server 2008 R2 以降は Standard Edition でバックアップ圧縮を利用 することが可能  バックアップファイルのサイズ削減  バックアップ時間の削減  バックアップ中の CPU 使用率の上昇  デフォルトの設定では明示的に圧縮を指定する必要がある
  • 27.
    データメンテナンス 2015/04/18System Center UserGroup Japan 12第 回勉強会27  インデックスの断片化解消  再構成 : REORGANIZE  オンラインで実施可能  既存のデータ領域を用いてデータを整列  再構築 : REBUILD  Enterprise Edition の場合はオンラインで実施可能  それ以外のエディションでは再構築中はオフラインとなる  新規のデータ領域に整列したデータを作成  Extent Scan Fragmentation の解消にもつながる  インデックスがどれくらいの期間で断片化するかを把握  例) 30 分で断片化するインデックスを 1 時間かけて解消する意味はあるか
  • 28.
    データメンテナンス 2015/04/18System Center UserGroup Japan 12第 回勉強会28  統計情報  適切なクエリの実行プランを生成するためには、最新のデータを使用して十分 なデータのサンプリングでの、統計情報の作成が必要となる  インデックスの再構築 (REBUILD) 時には 100% のサンプリングで統計情報が作 成される  手動による統計情報の更新時には WITH FULLSCAN を使用しないと一定のサン プリングによる統計情報の作成となるので注意  UPDATE STATISTICS <テーブル名>(<インデックス名>) WITH FULLSCAN  EXEC sp_updatestats  統計情報のサンプリングの確認  DBCC SHOW_STATISTICS ('<テーブル名>', '<インデックス名>')
  • 29.
    DEMO 2015/04/18System Center UserGroup Japan 12第 回勉強会29 断片化の解消と統計情報の更新 アプリケーション観点の情報取得 (スロークエリ)
  • 30.
    メモリ使用量についての考慮 2015/04/18System Center UserGroup Japan 12第 回勉強会30  よくある監視  メモリの使用量が 90% を超えたら、監視でアラートを投げる  その監視、データベースサーバーでも有益ですか??  Max Server Memory を設定して SQL Server のメモリ割り当ての上限を指定  サーバー メモリに関するサーバー構成オプション  https://msdn.microsoft.com/ja-jp/library/ms178067.aspx  データベースサーバーは可能な限りメモリにキャッシュする  これを考慮して、メモリ使用量の監視を行う  メモリ使用量が閾値を超えた→ さて、何をしましょう…。
  • 31.
    ポート / サービス監視 2015/04/18System Center User Group Japan 12第 回勉強会31  ポート監視  既定のインスタンス : TCP 1433  TCP 1434 (データベース管理者用の診断接続 :DAC)  名前付きインスタンス : 動的ポート (起動のたびにポートが変わる)  SQL Server Browser (UDP 1434) は名前付きインスタンスのポート番号を解決するためのサー ビスであるため、既定のインスタンス / 名前付きインスタンスをポートを固定して、ポート 番号指定で接続する場合は起動していなくても影響はない  サービス監視  既定のインスタンス : MSSQLSERVER  名前付きインスタンス : MSSQL$<インスタンス名>  プロセスとしてはどちらも sqlservr.exe  可能であればサービスの正常起動の確認  例) SELECT 1 を定期的に実行
  • 32.
    ERRORLOG 2015/04/18System Center UserGroup Japan 12第 回勉強会32  デフォルトでは 6 世代分作成される  SQL Server のサービスの起動時にローテーションされる  長期間起動しているサーバーでは ERRORLOG ファイルが肥大化する  世代数は最大で 99 まで変更可能  手動でローテーションすることが可能  sp_cycle_errorlog (Transact-SQL) https://msdn.microsoft.com/ja-jp/library/ms182512.aspx  SQL Server のエラー ログの数を増やす方法  https://support.microsoft.com/en-us/kb/196909/ja
  • 33.
    メンテナンスジョブのクリーンアップ 2015/04/18System Center UserGroup Japan 12第 回勉強会33  以下の情報のクリーンアップを検討する  バックアップ情報  SQL Server エージェントジョブ履歴  メンテナンスタスクのログファイル  メンテナンスプランの履歴 クリーンアップ タスク / メンテナンス クリーン アップ タスクを有効に活用する  履歴 クリーンアップ タスク  バックアップおよび復元の履歴  SQL Server エージェント ジョブ履歴  メンテナンス プランの履歴  メンテナンス クリーンアップ タスク  バックアップファイル  メンテナンス プラン テキスト レポート
  • 34.
    まとめ 2015/04/18System Center UserGroup Japan 12第 回勉強会34  構築  構築時にしか設定できない設定できない項目を把握  インスタンスレベルの照合順序  ディスクのアロケーションユニットサイズ  サービスの再起動を伴う設定かどうかを考慮  運用  復旧モデルに応じた適切なバックアップ  データメンテナンスの必要性  目的に適した監視が行える設定となっているか