効率的にパフォーマンスを改善するカギは2つ。
「パラメータの可視化」とそれを実現する「専用ツールの活用」
チューニングに必要なパラメータを把握する
連載の第1回ということで、少々前置きが長くなりました。ここまで読んできて「それで、いままで出てきた問題点を解決するには、具体的にどうしたらいいの?」と思う方もいるでしょう。そこでぜひお話ししておきたいのが、「パラメータの可視化」と、それを実現するための「専用ツールの活用」です。
メモリ領域に関するチューニング上の問題というのは、システム設計の段階ではほとんど知ることができません。実稼働時にはさまざまな要因が絡み合い、いわゆるトランザクション・ミックスの状態で動くため、具体的にどんな問題が発生するかは動かしてみないと分からないというのが実情です。
運用開始後にチューニング・ポイントを見つける際、一番重要なのは「バッファプール」です。ここはディスクから取り出したデータとインデックスが入っている領域で、このメモリ領域が不足するとSQL Serverが動かなくなってしまいます。
そこでSQL Serverでは、LRU(Least Recently Used)というアルゴリズムを使って、メモリ上の一番古い(使われていない)データを自動的に削除して、メモリ領域を確保しようとします。しかし、この削除したデータが頻繁に参照されるものだったりすると、次回に参照のクエリが来たときに、またディスクから読み出すことになり、CPUやI/Oの負荷が発生してパフォーマンスに影響を与えます。しかしこのケースでも、ユーザーからはCPUの稼働率が高いとか、特定のファイルへのアクセスが多いといった表面的な事象が見えるだけで、メモリを増やすという本当の“正解”は見えないままです。すべてのパラメータを可視化して検証できれば、こんなことはなくなります。
楽々チューニング&ベストパフォーマンスへの早道
一般にパラメータには手出しできないと思われているSQL Serverですが、実はコマンドが非公開なだけで、その“隠しコマンド”さえ分かれば、いくらでもチューニングできる項目はあります。
実際私は、75項目にも及ぶwait事象をはじめ、さまざまな事象を参照する方法を駆使して、複数のボトルネックを一度に分析・解決するノウハウを得ました。しかし、そうしたノウハウを一般の技術者が発見するのは、かなり難しいものです。まして日常の忙しい業務の中では、じっくりと研究している時間もないでしょう。そうした意味でもサードパーティ製の解析ツールを上手に活用して、問題点を可視化しながら具体的な解決策を探すことは、現実的でしかも効率の良い方法の1つといえるでしょう。
海外ではSQL Serverのパラメータを可視化するツールは数多く出回っていますが、ここでは日本でも入手しやすい2つの製品を挙げておきます(チューニングに必要なすべての事象が見られるわけではありませんが、通常のパフォーマンスモニタでは見ることのできないさまざまなパラメータを可視化することが可能です)。
Quest Spotlight on SQL Server
- クエスト・ソフトウェアが提供するSQL Server専用の診断ツール。I/Oレイヤからのアプローチを中心とした診断ツールで、ボトルネックの診断が行える。
- 稼働状況をリアルタイムにグラフィカル表示して、従来のパフォーマンスモニタでは表示できなかった情報を提供。
- サーバ側のエージェントなしで動作するため、システムのパフォーマンスに影響がほとんどない。
VERITAS Indepth for SQL Server
- シマンテック(旧ベリタスソフトウェア)が提供する監視ツール。アプリケーションのパフォーマンスデータを収集して、データベースの問題点を分析。改善のためのアドバイスまでを提示する。
- 階層内での問題を追求して、根本原因にまでさかのぼって解明できる。
- 変更に伴う影響を、あらかじめシミュレーションできる。
いよいよ次回からは、具体的なチューニングのノウハウを解説していきます。お楽しみに。(次回に続く)
監修者プロフィール
株式会社エイ・エヌ・テイ 執行役員/コンサルティング部長。
熊澤 幸生(くまざわ・ゆきお)
メインフレーム環境で20年近くデータベース関連のITプロジェクトを数多く経験。また1979年から1983年まで米国に駐在し、データ主導型システム設計を実プロジェクトで学ぶ。1994年、アスキーNT(現、エイ・エヌ・テイ)設立に参加し、SQL Server Ver 4.2からSQL Server 2000までシステム構築、教育にかかわってきた。現在同社執行役員 Chief Technology Officer。また、SQL Serverユーザー会「PASSJ」の理事として活動中。
- キャッシュを無駄遣いしないようにクエリを書く
- 64ビット時代の「バランスド・システム」
- DB管理者がいますぐ確認すべき3つの設定
- 内部動作を知らずしてチューニングは語れない
- CAT秘伝、バランスド・システムの考え方
- パフォーマンスを語るために歴史を語ろう
- チューニングに大変革をもたらす動的管理ビュー
- SQL Server 2005でガラッと変わった個所とは?
- チューニングとは……スレッドとの格闘に尽きる
- 進化するCPUをパワー全開で走らせるテクニック
- I/Oボトルネックの病巣はこれで究明できる
- I/Oチューニングを成功させる必修ポイント
- 排他制御の落とし穴を避けるインデックス設計
- 排他制御メカニズムから“待ち”原因を究明する
- パフォーマンスを満たす物理メモリ量を算出する
- 誰も知らないメモリ・チューニングの極意を教えよう
- SQL Serverというブラックボックスを開いてみる
Copyright © ITmedia, Inc. All Rights Reserved.