BT

MVP Erland氏がSQL Serverのパフォーマンス概念について検討

| 作者: Roopesh Shenoy フォローする 0 人のフォロワー , 翻訳者 編集部N フォローする 0 人のフォロワー 投稿日 2011年7月19日. 推定読書時間: 2 分 |

原文(投稿日:2011/07/13)へのリンク

最近の記事「アプリケーションで遅く、SSMSで速い?」で、 SQL Server MVPの Erland Sommarskog氏が クエリ プランに影響する様々なこと、 Dynamic SQLのコンパイル、最終的にSQL Serverデータベースのパフォーマンスに影響する他の要因について研究している。彼の研究は、様々な概念、パラメータ スニッフィングようなシナリオ、クエリ プラン キャッシング、ブロッキング、保存された設定、リンクしたサーバーの課題などに及んでいる。

この記事から幾つか面白いものを引用する。

プロシージャが最初に実行される時のパラメーター値は、その後の実行に大きな影響を及ぼす。もしある理由でこの最初の値セットが特殊であった場合、キャッシュしたプランは、その後の実行にとって最適なものではないだろう。これがパラメータ スニッフィングが重要な理由である。

時々フォーラムやニュースグループで、ストアドプロシージャが遅いが、プロシージャの外で同じクエリを走らせると速い、と言っている人々を目にする。自分で問題解決をしようと考えたら、変数を定数で置き換える。しかし、これまで見てきたように、スタンドアローンクエリの結果は、非常に違う。SQL Serverは変数ではなく定数で、もっと正確な見積りをすることができる。なのでもっと正確なプランが手に入る。

(リンクしたサーバーにとって)重要なのはリモートサーバーに対するパーミッションであり、クエリが走っているローカルサーバーに対するものではない。また、リンクされたサーバーが他のSQL Serverインスタンスの時は、この問題ははっきりする。リンクされたサーバーがOracle、MySQLあるいはAccessの場合には、この問題は起きない。

この記事はまた、ボトルネックや潜在的問題ばかりでなく、関連しているSQLクエリを見つけ出す色々な方法について説明している。

  • Management Studio内からクエリプランやパラメーターを得る
  • それらをクエリキャッシュから直接得る
  • それらをTraceから得る
  • テーブルとインデックス定義を得る
  • 統計情報を見つけ出す

氏はまたパラメータ スニッフィングの問題を修正する様々な方法を挙げている、例えば、再コンパイルの強制、インデックス化のレビュー、OPTIMIZE FORの使用、最後に、色々なシナリオで適用できる、単に悪いSQLの修正などである。

最後に、この記事は動的なSQLやいかに似たような原理が動的SQLクエリのパフォーマンスに影響するかについて述べている。この記事は開発者やDB管理者のようなSQL Serverで開発している誰もが、絶対に読むべきである。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT