sql >> データベース >  >> RDS >> Oracle

パフォーマンスチューニング迷路

    ある日、目を覚ますと、自分がOracleデータベース管理者であることがわかります。神々はついにあなたの本当の可能性への光を見て、あなたが世界で最高の仕事で働くことを可能にしました!あなたはDBAのキャリアをとても明るい目とふさふさした尾で始めます。新しいデータベースを作成し、権限を付与し、PL/SQLコードを記述します。人生は素晴らしい。朝起きて、最初の一杯のコーヒーを注ぎ、ブラウザをお気に入りのOracleフォーラムに向けて、昼食前に一生に一度の知識を吸収するのを待ちきれません。それらの神々がまだあなたに微笑んでいるなら、あなたはいくつかの質問に答えて、素晴らしいポイントで報われるかもしれません。人生は素晴らしい。人生は甘い。

    新たに見つけたキャリアの輝きをまだ浴びている間に、誰かが問題を抱えてあなたのところにやって来ます。パフォーマンスの問題。あなたはフリーズします。データベースのパフォーマンスの問題を解決する方法がわからないという自己認識に達すると、喉に小さなしこりができます。その日に気づかなかったのは、あなたの前のすべてのDBAが、キャリアの早い段階でまったく同じ状況にあったことです。それでも、他の人があなたを見て、なぜあなたがパフォーマンスの問題をすぐに解決していないのか疑問に思うのを止めることはできません。結局のところ、あなたはDBAであり、このようなことを行う方法を知っている必要があります。彼らが呼ぶこの魔法のようなもの(天使が歌う合図)パフォーマンスチューニング 。それが書かれているので、あなたがDBAになって生き残り、そしてこの仕事をうまくやるなら、あなたはパフォーマンスを調整しなければならないでしょう。他の人は、あなたがポーションを作って呪文を唱えるときに、カーテンの後ろで何が起こっているのかを知ることは決してありません。彼らが気にしているのは、あなたが彼らのパフォーマンスの問題を解決し、彼らが日常の仕事に取り掛かることができるということだけです。

    キャリアの早い段階で、すべてのDBAは、パフォーマンスチューニングと呼ばれるこのことについてもっと学ぶ必要があると判断します。 。それは何ですか?どうすればいいのですか?その5時間のレポートを1分の奇跡に変える秘訣を発見したので、どうすればIT部門で最も重要な人物になることができますか?

    ああ、当時はとても若かった…とても素朴だった。簡単だと思いました。いくつかのボタンを押して、いくつかのツールとプレストを起動します。パフォーマンスチューニングソリューションが見つかり、私たちは素晴らしいです!私たちがその黄色いレンガの道を冒険したので、人生はとても簡単に見えました。しかし、この道には怖いカラスはいない。ライオンはいません。ブリキの男性はいません。トトというかわいい犬もいません。いいえ…この道…。このOraclePerformanceTuningの道は、はるかに大きなもので満たされています。この道で、私たちはユーティリティとツールに出会います。 ExplainPlanを満たしています。 tkprofとSQLTに会います。 V$SGA_TARGET_ADVICEやV$SESSION_WAITとその双子のV$SESSION_EVENTのような素晴らしい景色が見つかります(一卵性双生児は気になりませんが、一卵性双生児は関連していることがわかります)。

    だからあなたはそこにいます。送信するすべての電子メール署名で、光沢のあるDBAタイトルがまだあなたの名前の下にあります。そして、これらのすばらしいツールをすべて自由に使用できるようになりました。ありがたいことに、あなたの会社がDiagnostics Packを提供してくれたので、ASHとAWRを手に入れました。あなたの本棚はこのような素晴らしい本で武装しています。 (私が知っている恥知らずなプラグ)。私のようなフォーラムの素晴らしい人があなたをLightyに導きました。ツールボックス全体を自由に使用できます。いいえ!ツールボックスではありません….warchest!世界の他の場所の小さな国はあなたが自由に使える武器を持っていません。なぜ…SQLTuningAdvisorのその極秘ボタンに触れて、それらの国の1つである*および*を吹き飛ばすことができました。 SQL ID 98byz76pkyqlを高速化して、コーヒーからまだ蒸気が上がっている間に…私はとても良いです。

    あなたが最初のパフォーマンスの問題を受け取り、喉にしこりがあったその日を覚えていますか?あなたのDBAのキャリアには、そのような別の日があります。 パフォーマンスチューニング迷路に到達した日 (雷と稲妻をキューに入れます)。しかし、これは迷路ではありません。これは違います。ほとんどの迷路には1つの入口と1つの出口があり、途中で多くの方向転換と決定が行われます。この迷路、なぜ、この迷路は明らかに異なります。この迷路にはたくさんの入り口があります。そして、この迷路には多くの出口があります。 各入り口は異なるパフォーマンスチューニングツールです。そして、各出口は解決策です 、ただし、すべてのソリューションが実際にパフォーマンスの問題を解決するわけではありません。そしてこれは、オラクルのパフォーマンスチューニングスペシャリストが直面する難問です。パフォーマンスに問題があります。この迷路の向こう側に私の解決策があることを私は知っています。しかし、私はどの入り口を選びますか? 1つの入り口には、その上にExplainPlanが書かれています。別の入り口には、V$DB_CACHE_ADVICEが書き込まれています。私が自由に使えるツールごとに1つずつ、これらすべての入り口があるのはなぜですか。これは私の青春時代の物語であり、ビルボがフロドに書いたように、この物語があなたの冒険にも役立つことを願っています。

    だから私は入り口を選びます。

    迷路に入ります。

    私は良い選択をしましたか?

    さて、これがどこに行くのか見てみましょう。前方を進むと、道路は左折します。しかし、それは私の唯一の選択なので、私はそれを使います。次に、交差点に来ます。右にも左にも行けます。右折します。おっと…行き止まり。だから私はバックトラックして、代わりにそれを左に持っていきます。もう一つの行き止まり。ドラッツ。迷路に入った。 場合によっては、ツールが解決策につながらないこともあります。 そこで、入り口に戻って別の選択をし、別のツールを選択しました。

    もう一度迷路に入りました。しかし、物事ははるかに良く見えています。私は続けます。あと数ターン。光が見えるので、終わりに近づいています。はい…あります、出口です。やっと迷路の向こう側に出てきました。私はパフォーマンスチューニングソリューションを手元に持っていますが、ソリューションを実装した後、これではパフォーマンスの問題がまったく解決されなかったことにすぐに気付きました。 場合によっては、ツールを使用すると、特定の問題に関係のないソリューションにつながることがあります。 それで、迷路への3番目の入り口の時間です。

    賢明なパフォーマンスチューニングのスペシャリストである私は、これまでに選択したすべての入り口がデータベース全体のパフォーマンスに関連していることに気付きましたが、私が本当に求めているのは、特定のSQLステートメントに関連するパフォーマンスです。しかし、どのSQLステートメントを調整する必要があるのか​​わかりません。どうすればどれを見つけることができますか? 3ドア下は、SQLトレースとマークされた迷路への入り口です。そのすぐ隣には、EMSearchSessionsとマークされたドアがあります。コインを投げてSQLトレースを選択します。迷路に入って間もなく、T字交差点に到着します。左に行くと、EMSearchSessionsのドアに戻ります。右に行けば、出口へのストレートショット。当然、私は正しく行きます。しかし、現時点では、2つの異なるツールで同じ答えが得られる場合があります。 迷路を出ると、tkprofへのフリーパスが与えられます。結局のところ、すべてのSQL Trace道路がtkprofに直接つながっているわけではないのですか?問題のあるSQLステートメントがあります。しかし、私の問題はまだ解決されていません。どうすればいいですか?

    迷路の入り口に戻ります。 時々 調整ツールから回答を取得し、迷路をもう一度実行して最終的な回答にドリルダウンする必要があります。 今回はSQLTドアに入ります。いくつかのねじれと曲がり角がありますが、この迷路の道はかなり簡単です。最後になりますが、答えは1つだけでなく、たくさんあります。ああ…素晴らしい日!私はすべてのツールの母を見つけました。

    他のDBAがSQLTやAWRレポートのようなこれらの奇跡のツールについて話しているのを聞いた。彼らはどれほど素晴らしいか。これらのツールは非常に優れているため、一部のDBAはSQLTおよびAWRレポートの入り口しか表示しません。これは伝説のようなものだといつも思っていましたが、ついに私もそれらすべてを支配する1つのツールを見つけました…わかりました…それぞれの手に1つずつ。私はこれらすべての答えを自由に使うことができます。今、どの答えが私のパフォーマンスの問題に直接関係しています。ここにSQLTレポートがあり、これらすべての回答が含まれています。どちらの答えが私のものです。どれ?!?!? ツールが提供する情報が多すぎる場合があります。 このパフォーマンスチューニングを初めて行う私にとって、SQLTの出力はクリンゴン語で書かれた方がよいでしょう。しかし幸運なことに、私はクリンゴン語を話す私から2つの立方体を下に置いている仲間のDBAを知っています。私は彼に私のSQLT出力を渡します。彼はそれをざっと見て、30秒以内にレポートの1つの小さなセクションを指摘し、それらの魔法の言葉を言います。 「ほら…そこに…それがあなたの問題です。」私の顔に奇妙な表情を浮かべて、彼はレポートに手を振ると、まるで魔法のように、Google翻訳がページ上のいくつかの単語を変更し、非常に悪い統計のテーブルがあることがはっきりとわかります。 場合によっては、これらすべての答えを備えたツールは、それらの使用方法を知っている人にとっては時間の節約になります。 このクリンゴン語を話すDBAは眼鏡を押し上げ、SQLTレポートの別のセクションを明らかにします。 「ここで彼が言うのを見てください…それらの悪い統計はFTSを強制しています」私が私のキャリアのこの時点でFTSが何であるかを知っているはずであるかのように。しかし、私は合計n00bのように見えたくないので、私は微笑んで同意してうなずきます。

    わかりました…問題の解決に近づいています。私は悪い統計を持っていることを知っています。私は自分の問題を最終的に解決するために仕事に取り掛かろうと熱心に机に戻っています。私がウォータークーラーのそばを通り過ぎて、一日中何もすることなく同僚の群れを一周すると、太陽が迷路の1つのドアを照らし、私の目の隅を捉えます…たった1つのドア。そのドアの上には、DBA_TABLESと書かれた看板があります。他の優れたDBAと同様に、これらのことを再確認することは悪い考えではないと自分に言い聞かせます。それに引き付けられ始めて、私はDBA_TABLESドアに入り、再び迷路の中にいます。急に曲がると、びっくりするような何かが飛び出してきます。しかし、私はこれが上手になりつつあります。小さな迷路の住人が、このテーブルがテーブルスペースUSERSにあると私に言ってもかまいません。これが目前の私の問題に何の違いもないことを私はすぐに知っています。私は、これらの小さなインプのすべてを、それらの偽の情報とともに押し進めて無視します。押します。そして、そこにあります…迷路の出口で、このテーブルに統計がないことを確認します。ここで簡単なレッスンを学びました。ツールによって、この日に自分に関係のない情報が提供されることがあります

    私はこのDBAゲームに慣れていないかもしれませんが、私はこれを知っています。現在のパフォーマンスを確認し、変更を加え、パフォーマンスの向上があればそれを測定する必要があります。それで私は迷路に戻ります。今回は、SQL Developer Autotraceとマークされたドアに入り、問題のあるSQLステートメントを実行します。 SQLステートメントの実行時間を取得するだけでなく、読み取りの数と実行プランを確認できます。クリンゴン語を話す友人が私に指摘したテーブルの統計をすばやく更新します。 (さておき…以前は彼はグッと思っていましたが、今ではそれほど悪くはありません。この男から学ぶことができます。いつか私もクリンゴン語を話せるようになるかもしれません)。次に、SQLDeveloperAutotraceドアに再び入ります。クエリの実行が2分から2秒に短縮されただけでなく、読み取りが大幅に減少し、ExplainPlanが改善されました。わかりました、その最後の部分は少しストレッチです。 Explain Planの方が優れているかどうかはまだわかりませんが、キャリアの後半で振り返ってみると、それが良かったと思います。 時々、パフォーマンス調整ツールが問題の根本原因を見つけるのに役立つだけでなく、解決策が実際に問題を修正したことを確認するためにそこにあることをすぐに学びます。また、結果を確認するためのツールが、根本的な原因を見つけるために使用したツールではない場合もあります。

    問題が解決したことをエンドユーザーにすぐに通知しました。ユーザーは私がよくわからないことを不平を言い、彼の人生が実際に良くなっているのかどうかを確認します。そして、それは私がそれを受け取ったときです。 DBAがこれまでに受け取ることができた最高の贈り物。そうです…ユーザーからの称賛を受けました 。今日、私は奇跡の労働者かそこらのユーザーが考えています。私がこのユーザーの立方体に立っていると、彼は「彼はそれを修正しました」と叫び、合図で、部門全体の頭が地面からホリネズミのように立方体の壁を越えて飛び出します。やあ..彼らは応援します!私は輝きを浴びる人生を愛しています。上司が仕事の後に私たちをパブに連れて行くことさえ提案する理由..最初のラウンドは彼女にあります。

    私は自分の机に戻り、次の挑戦に挑戦したいと思っています。この仕事はこれ以上甘いものではありません。

    このパフォーマンスチューニングメイズとの最初の出会いは、まるで昨日のようだったのを覚えています。その夜、私たちがパブでパイントを冗談で言っていたとき、私はあえてその迷路で見たもののいくつかについて話さなかった。私の同僚はとにかく理解しませんでした。 MOSドラゴンとの戦いについては誰にも言わない。何度もやけどをしました。クエリを実行し、結果を1時間待って、もう一度やり直して、1時間待って、もう一度やり直して、1時間待つのがどれほど退屈なのか、誰にも言わないでください。私の青春時代の試練と苦難は、また別の機会のために保存された方がよいでしょう。たぶん私は別の本を書きます。

    でも当時はたくさんのことを学びました。時間が経つにつれて、私は良くなり、目の前の問題のために迷路への最良の入り口を選びました。結局のところ、これらの魔法のパフォーマンスチューニングエリクサーでより良くなることができるのは経験によってのみです。 また、あるツールが仕事に適しているように見えることもありますが、チューニング作業の途中で別のツールの方が適していることがわかります。

    また、ツールを使用して作業し、ツールが得意なことと得意でないことを学習するだけで、仕事に適したツールを選択できることも学びました。 昔は、ハンマーでネジを打ち込もうとしているように感じることがよくありました。今、私はネジを見て、最高のツールがドライバーであることを知っています。

    時間が経つにつれて、パフォーマンスチューニング迷路への入り口の数が増えてきました。私は今でも、10046という数字が上にあるような、試行錯誤された真のドアを通り抜けます。過去に、虹とユニコーンにつながる魔法のドアについて聞いたことがありますが、橋。当初、Lightyがこのような魔法のツールであることに懐疑的でしたが、それについては間違っていました。

    ああ、私があなたに話すことができる話ですが、この話は本当にそのパフォーマンスチューニング迷路についてです。それは常にその迷路に帰着します。可能な限り最高のドアを選択してください。ただし、どちらが最適かは経験によってのみわかります。これにより、ソリューションに最も早く到達できるようになります。間違った方向に曲がって、最初からやり直してください。迷路に何度も入ることを恐れないでください。解決策があると思ったら、迷路を通り抜けて確認します。オラクルのパフォーマンスチューニングユーティリティとツールの不思議をすべて備えたこの魔法のパフォーマンスチューニング迷路は、今では私のお気に入りの場所の1つになっています。新しいツールが迷路の終わりに私をはるかに速く導くことを願って、私はいつもより多くの入り口を追加するのが好きです。することもあればしないこともあります。

    古い「比率ベースのチューニング」迷路でたむろしていた日々を今でも覚えていますが、私はより緑豊かな牧草地に移りました。古い迷路の前に新しいDBAが立っていて、蜘蛛の巣で覆われているのを見ると、私はまだ笑っています。彼らはヒントを得ることができません。そして、その迷路を忘れて、他のみんながぶらぶらしているここに来るように彼らに怒鳴ると、私は不機嫌になりますが、彼らがもっとよく知っていると思う誰かに拍車をかけられます。もう一度会ったら、「そう言ったよ」と言って大笑いすることができます。

    私はよく、これらの光沢のあるツールのいくつかを使用して私を見る人々と一緒に仕事をします。彼らは私が迷路に入り、答えを持って反対側に出てくるのを見ています。それで彼らの明白な次の質問は「私もそのドアに入ることができますか?」です。笑う。 「もちろん…すぐに行ってください」と私は彼らに言います。このクールなチューニングツールを装備しているが、Oracleのチューニング方法に関する知識がないため、かなり良いが、微妙な試みをしている。彼らは私を迷路に呼び、問題を解決するのを手伝ってくれるように頼みます。そこで、ツールを起動して確認します。問題の根本的な原因はすぐにわかりますが、ツールの光沢のあるベルとホイッスルが新生児を混乱させています。この時点で、私は今クリンゴン語を話している。数秒以内に、「ほら…そこに…それがあなたの問題だ」と言います。そして、私は何年も前にDBAメンターに提供したのと同じ奇妙な外観を取り戻します。これらの初心者は常にツールへのアクセスを望んでおり、マスターのようにツールを使用できると考えています。彼らは迷路の中に何があるのか​​、それをどのようにナビゲートするのかについての手がかりを持っていません。あまりにも多くの人が、実際に道具を振るう人が道具を秘密のソースだと考えています。悲しいことに、ツールにアクセスできる人の中には、すばやく簡単に答えたいと思っている人もいます。彼らは私たちの多くのように時間をかけたくないのです。

    時間、マスターに従う時間。私たちは皆、ラシュモア山の私たちのバージョンを持っています。石に刻まれています。いくつか例を挙げると、Millsap、Lewis、Shallahammerなどの人々がいます。あなたのラシュモア山は他の名前や似たような名前を持っているかもしれません。私たちのラシュモア山を見る他の人たちは、すべて石に設定されていますが、これらの立派な人々が迷路の中で私たちのガイドであったことに気づいていません。彼らは迷路をナビゲートする方法を教えてくれました。彼らは私たちにツールの使い方といつ使うべきツールを教えてくれました。マスターから学んだ私たちのレベルは、それを前払いして他の人に教えるために最善を尽くしますが、私たちはそのような高い高さを達成することは決してないかもしれません、そしてそれは大丈夫です。

    物語の教訓は、これらのツールを学び、それらが何をし、何をしないかを学ぶことです。彼らが取り組むのに役立つ問題を学びましょう。ツールを活用しますが、迷路を自信を持って歩くことができるように、できるだけ多くのことを学ぶ必要があることを理解してください。悲しいことに、私はここで私の話を終わらせなければなりません。誰かが別のパフォーマンスチューニングの問題で私のオフィスに入ってきました。再び迷路に入る時間です。今、私はどのドアを取りますか?


    1. SQLServer-UPDATEステートメントを許可する自動インクリメント

    2. SQLのアクセントを無視して文字列を比較する(ORACLE)

    3. DBCCCheckDB機能の概要

    4. Oracleで小数なしで数値をフォーマットする4つの方法