none
SQLServer2012 各種設定の最適化について RRS feed

  • 質問

  • 現在、以下で開発を行っています。

    サーバー:

    OS:WindowsServer2012

    SQLServer:SQLServer2012 StandardEdition(フェールオーバークラスターで使用)

    クライアント

    OS:Windows7

    アプリケーション:C#.NETで作成

    SQLServerの各種設定、メモリ量、スレッド数、CPU数等の

    最適化を調査しています。

    こういった情報を探しています。

    情報が記載されているHPか、情報があれば教えて下さい。

    2015年5月20日 12:54

回答

  • なるほど。
    そういう場合は原因があるはずなので、原因を切り分ける方向からのスタンスも検討してみてください。
    あと、特性としてデータなどがキャッシュされるまでは本来のパフォーマンスが出ませんので、負荷テストはその辺りも考慮漏れしていないかご注意ください。

    原因切り分けとしては、全体的に遅い場合は待ち状態から追うのが王道かと思います。
    以下の辺りが参考になるかと思います。
    http://blog.engineer-memo.com/2013/10/15/sql-server-%E3%81%AE%E5%BE%85%E3%81%A1%E4%BA%8B%E8%B1%A1%E3%82%92%E8%A6%8B%E3%82%8B%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E3%81%AE%E6%96%B9%E6%B3%95/
    http://www.atmarkit.co.jp/fdb/rensai/drk2_02/drk2_02_2.html

    闇雲にパラメータを変更すると対症療法的な手法に陥っていても気づきにくいので、その場しのぎになって後日に重大なパフォーマンス問題を引き起こすことがありますので、その点重々ご留意ください。


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2015年5月28日 1:12
    • 回答としてマーク 星 睦美 2015年6月1日 4:52
    2015年5月25日 9:43

すべての返信

  • とりあえず BOL で設定項目のところに考え方も併記されているのでいくつかピックアップを。

    メモリは以下のあたりですかね。
    https://technet.microsoft.com/ja-jp/library/ms178067(v=sql.110).aspx

    スレッドは以下の辺りですかね。
    https://technet.microsoft.com/ja-jp/library/ms190219(v=sql.110).aspx

    CPU 数というのは Affinity のことですと以下の辺りですかね。
    https://technet.microsoft.com/ja-jp/library/ms187104(v=sql.110).aspx

    あとは、SQLCAT から出ているホワイトペーパーやベストプラクティスが詳しいですが、概ね英語です。

    なお大前提としてほとんどのパラメータは初期設定のままが最も安定します。
    よほど詳しい人でなければ想定外のパフォーマンス問題を起こすだけですので、私のレベルでは特定の状況、特定のパラメータ以外はほぼ初期設定のままにしています。


    MCITP(Database Developer/Database Administrator)

    2015年5月25日 6:31
  • 回答ありがとうございます。

    パラメータをそのままで負荷テストを行ったところ、

    レスポンスが悪い事が判明した為、このような調査をしております。

    貴重な情報を頂き、ありがとうございました。

    URLを確認させて頂きます。

    2015年5月25日 8:58
  • なるほど。
    そういう場合は原因があるはずなので、原因を切り分ける方向からのスタンスも検討してみてください。
    あと、特性としてデータなどがキャッシュされるまでは本来のパフォーマンスが出ませんので、負荷テストはその辺りも考慮漏れしていないかご注意ください。

    原因切り分けとしては、全体的に遅い場合は待ち状態から追うのが王道かと思います。
    以下の辺りが参考になるかと思います。
    http://blog.engineer-memo.com/2013/10/15/sql-server-%E3%81%AE%E5%BE%85%E3%81%A1%E4%BA%8B%E8%B1%A1%E3%82%92%E8%A6%8B%E3%82%8B%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E3%81%AE%E6%96%B9%E6%B3%95/
    http://www.atmarkit.co.jp/fdb/rensai/drk2_02/drk2_02_2.html

    闇雲にパラメータを変更すると対症療法的な手法に陥っていても気づきにくいので、その場しのぎになって後日に重大なパフォーマンス問題を引き起こすことがありますので、その点重々ご留意ください。


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2015年5月28日 1:12
    • 回答としてマーク 星 睦美 2015年6月1日 4:52
    2015年5月25日 9:43
  • 回答ありがとうございます。

    教えて頂いたURLの中で

    max worker threads、affinity mask サーバー構成オプションに関しては、

    考慮していなかったので、効果が得られるか試してみようと考えていましたが、

    記載して頂いたように闇雲にパラメータを変更してしまうのは、危険だと感じております。

    教えて頂いたURLの情報も含め、問題をもう少し特定し、対応を切り分けたいと思います。

    現在起こっている事象としては、

    C#で作成されたアプリケーション[クライアントPC(Windows7)]10台から一斉に

    DB[Sqlserver2012Standard]の同一テーブル(条件が異なる為、個別のレコード)にアクセスすると

    レスポンスが低下し、デットロックが発生します。

    Sqlserver2012に搭載されている機能を利用し、

    更新ロックとインテント排他ロックによるデットロックが発生していること。

    どちらもページロックでテーブルにアクセスしていること。

    実行プランを利用したところ、インデックスが不足している旨のメッセージが出ていた為、

    出力されたメッセージの通りにインデックスを貼った場合、レスポンスが向上し、

    デットロックが発生しなくなったこと。

    が解っています。

    但し、インデックスを貼る場合、他の機能への影響や他のテーブルの調査も含めて

    作業範囲が膨大になる為、対応を検討しています。

    サーバー側のチューニングで何か対応出来るものはないかと思い、

    質問を挙げさせて頂いておりました。

    詳しく記載頂き、本当にありがとうございます。

    2015年5月26日 0:29