チューニング実施さて,お待たせしました。ここまできてようやくチューニング実施となります。チューニングの手段は,治療のための薬剤や手術の種類が多様であるのと同じように,多様な方法が用意されています。人間の体が人種や年齢を問わずほぼ同じ構造をしているのに対し,DBMSにはそれぞれ特徴とクセがあるため,使用できるチューニングプランもかなり実装依存となります(注5⁠)⁠。そのため本稿では,チューニングプラン計画のための大方針である,リソースの使い方という一般的な観点から,チューニングについてまとめてみたいと思います。チューニングをリソースという観点から分類すると,正反対の方法が2種類存在します。リソースをより多く使わせるチューニングと,リソース消費を抑えるチューニングです。注5)人間の場合でも性別によって体の構造がかなり異なりますが,それに近いかもしれません。リソースをより多く使わせるチューニングリソースを多く使わせることがチューニングにつながるケースとは,たとえば,前節で解説したコネクションのプール数が少ないことにより流量が絞られている場合です。いうときは,プールの数を増やしてもっと同時に多くのコネクションがリソースを使えるようにしてやる必要があります。閉めていた水門のバルブを開くイメージです。開き過ぎて逆にリソースを枯渇させたら本末転倒ですので,効果を注意深くモニタする必要があります。リソース消費を増やすことがチューニングとなるもう一つのケースは,処理の並列化が可能な場合です。DBで言えば,パラレルクエリの機能がこれに相当します。CPUのリソースに余裕がある場合は,マルチコアプロセッサを効率良く使える技術です。厳密に見ると,このタイプのチューニングを本当にチューニングと呼んでよいかどうかは若干の疑問が残ります。リソース」という全体の面積は変わらないからです(図5⁠)⁠。リソースを効率的に使用するというのは(特に他ユーザへの影響を気にしなくてよいバッチ系のシステムでは⁠)⁠,一概に悪いことではないのですが,これが一種のトレードオフであることは事実です。そのため,このタイプのチューニング後にはリソース枯渇を招いたり,他ユーザが実行する処理の性能に影響を与えるリスクが高まるというコストを負うことになります。たしかに処理時間は短くなったけど...リソース消費を抑えるチューニング他方,リソースを使わせない方向でのチューニングもあります。一般的に筆者たちがチューニングと聞いて連想する技術の多くはこちらに属します。DB関連の技術としては,インデックス,パーティション,ヒントによる実行計画の変更があります。したチューニングが有効なケースは,先ほどとは逆にOSリソースにボトルネックが見られる場合です。DBにおいて最もボトルネックになる可能性が高いリソースはディスクです。CPUやネットワークがボトルネックになるのは相対的にはレアケースです。事実,インデックスもパーティションも,ディスクへのアクセス量を減らすための技術です。ヒントで実行計画を変える際も,基本的にはいかにディスクからの読み出し量を減らすか,という観点で行います。このタイプのチューニングは,いわば処理時間(x軸)もリソース消費量(y軸)も小さくすることを目的にしています。理由は,このタイプのチューニングのほうが,トレードオフで失うものが少ないからです(注6⁠)⁠。どちらのタイプのチューニングが有効かは,検査・診断の結果,ボトルネックがどこに存在しているか,およびシステムの特性(バッチかオンラインか)によります。注6)トレードオフがまったくないわけではありません。知られているようにインデックスは更新性能を悪化させますし,パーティションを使えば管理コストが増えます。効果測定チューニングを実施したら,その成果が現れるか,もう一度測定を行う必要があります。時には期待通りの結果が得られなかったり,悪くするとさらに病状を悪化させてしまっていることもあるので,効果測定は絶対に必要です。点だけ注意が必要なことは,一度の効果測定で測るチューニングは1つだけに制限することです。これは,複数の変数を一度に変えてしまうと,ある治療単独の効果がわからないからです。時間がないときは,一度に複数のチューニングを施したいという誘惑に駆られることもあるかもしれません。断言してもよいですが,そうすると結局あとでもう一度測定しなおしになって二度手間になります。「⁠急がば回れ」の格言が教えるとおり,治療は一歩一歩着実にやりましょう。パフォーマンスチューニング著者プロフィールミックSI企業に勤務するDBエンジニア。データウェアハウス業務に従事している。自身のサイト「リレーショナル・データベースの世界」でデータベースとSQLについての技術情報を公開している。Press』で「SQLアタマアカデミー」を連載中。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。