データベースチューニングツールは、通常データベースチューニングに時間がかかる手動プロセスの多くを自動化することによって、チューニングプロセスを容易にするように設計されています。
また、データベース・チューニング・ソフトウェアは、問題のある箇所を正確に把握できるため、クエリーやアプリケーションの中を探し回る必要がなく、効果的なトラブルシューティングの手段にもなります。見えない問題を解決することはできません。これらのツールは、データベースがどのように動作しているかを概観することができます
データベースチューニングツールは、通常データベースチューニングに時間がかかる手動プロセスの多くを自動化することによって、チューニングプロセスを容易にするように設計されています。
また、データベース・チューニング・ソフトウェアは、問題のある箇所を正確に把握できるため、クエリーやアプリケーションの中を探し回る必要がなく、効果的なトラブルシューティングの手段にもなります。見えない問題を解決することはできません。これらのツールは、データベースがどのように動作しているかを概観することができます
データベースクエリーの数ミリ秒の遅れは、あっという間に大きなボトルネックとなり、修正するのに長い時間がかかることがあります。データベースのチューニングが重要なのは、クエリの応答時間を数秒単位で短縮できるため、必要な情報を必要な場所にすばやく届けることができるからです。定期的なチューニングは、データベースパフォーマンスのベストプラクティスの重要な部分であり、アプリケーションのパフォーマンスを加速させる手っ取り早い方法となります。
データベースのパフォーマンスチューニングのベストプラクティスに関して、ここでは簡単なチュートリアルを紹介します。
1)過去のデータを使って「正常」であることを確認し、データベースのベースラインに関する情報を収集します。ベースラインの指標を収集することで、データベースに何か異常があるかどうかを簡単に(そしてはるかに速く)確認することができます。
2)実行プランに目を通す。MySQL では、データベース管理者がクエリおよびデータベースのパフォーマンスを調査するためのさまざまな方法を提供しています。実行プランに目を通し、可能な限り効率的であることを確認します。
3)すべてのテーブル、インデックス、クエリに非効率性がないかを確認します。待ち時間の増加やインデックスのカラムアライメントを確認します。
4)ボトルネックを特定し、解消する。問題のあるSQLクエリとその原因を特定し、ボトルネックを解決する。
5)効果的な監視を実施する。非効率的なクエリは、データベースのパフォーマンス問題の主な原因であるため、データベースのチューニングの大部分はクエリパフォーマンスの監視に費やされます。たとえば、SolarWinds Database Performance Analyzerは待機ベースの分析機能を備えています。これは、時間関連の問題がデータベースパフォーマンスチューニングの最も顕著な問題点の1つであるためです。この方法は、データベースパフォーマンスチューニングの問題をより正確に切り分け、特定し、調査するのに役立ちます。
ここでは、データベース全体のパフォーマンスを向上させるために役立つヒントをいくつか紹介します。
●インデックスが論理的なデータ構造を実装していることを確認し、データ検索プロセスをより効率的にする。
●コンピューティングシステムのメモリーの予備を再割り当てする。十分なメモリがない場合、データベースはしばしば最も大きな打撃を受けます。
●MySQLやOracleの最新版を使用していますか? データベースを最新に保つだけで、データベースのパフォーマンスが向上することがあります。
●ループのコーディングや相関性のあるSQLサブクエリのような一般的なSQLインデックスの落とし穴を避ける。
●データをデフラグすることで、データベースのスピードアップにつながるかもしれません。十分なディスク容量があることを確認する。
●効果的なデータベースチューニングとパフォーマンス監視は、洞察とピンポイントでのパフォーマンス最適化の推奨事項を提供するのに役立ちます。
SQLパフォーマンス・チューニングは、データベース・パフォーマンス・チューニングと似ていますが、より狭い範囲に限定されます。SQLパフォーマンス・チューニングは、リレーショナル・データベースが可能な限り効率的に動作するように設計されたベストプラクティスや手順のことを指します。これには主に、SQLクエリーとインデックスのチューニング、管理、および最適化が含まれます。
定期的な SQL パフォーマンス・チューニングは、SQL パフォーマンス問題の一般的な原因である非効率的なインデックスと SQL クエリに取り組む費用対効果の高い方法であり、リソースを再割り当てしてシステムを自助努力で使用することによって実現できます
データベース・パフォーマンスチューニングは、データベース管理者がデータベースを可能な限り効率的に実行する方法を指す広義用語です。DBMSチューニングは、通常、MySQLやOracleなどの一般的なデータベース管理システムのクエリをチューニングすることを指します。
データベースのチューニングは、全体的なパフォーマンスを向上させるために、データベースシステムを上から下まで、ソフトウェアからハードウェアまで、再最適化することを支援します。このチューニングには、最適な使用方法に応じたオペレーティングシステムの再構成、クラスタの展開、システム機能とエンドユーザー体験をサポートする最適なデータベース性能への取り組みが含まれます。

環境の大規模化・複雑化に伴い、データベース管理者は、様々な種類のデータベースを監視できる異常検知ツールを必要としています。Database Performance Analyzer(DPA)は、WindowsおよびLinuxサーバー上の仮想化、物理、クラウドベースのデータベースインスタンス、Azure、またはAWSサブスクリプションとして、1回のインストールで使用できる異常ベースのデータベース監視ツールを提供します。DPAの異常検知ツールは、Oracle、MySQL、Azure SQL Database、Microsoft SQL Serverなどをサポートするよう構築されています。また、DPAはVMオプションでVMware ESXiの可視化機能を統合しています。

データベースの異常検知ツールは、そこに入力されるデータによってのみ、その性能が発揮されます。Database Performance Analyzer(DPA)は、24時間365日、異常ベースの監視を行い、機械学習アルゴリズムにより最新の洞察を提供します。30日以上監視が停止した場合、DPAのアルゴリズムは古いデータに基づいて予測を行うことはありません。代わりに、DPAは新しいデータから学習を開始し、3日後に最新のデータに基づいて再び予測を開始します。この機能により、異常検知の取り組みが最新の関連データのみによって裏付けられていることを確認することができます。
データベースの異常を検出することも重要ですが、24時間365日ダッシュボードを見続ける人はいないため、Database Performance Analyzer(DPA)は動作の変化を検出した際にアラートを送信することが可能です。感度を快適なレベルにカスタマイズしてノイズを減らし、DPAに監視を任せてください。
DPAはデータベースを常時監視し、動作の変化が検出されるとアラートを送信します。この異常検知ツールは、ワークロードのシフト、メンテナンスジョブの営業時間内実行、その他調査したい予期せぬ変化が発生したときに知らせることができます。
データベース管理者は、データベースのパフォーマンスにおけるスパイクに注目しがちです。これは問題のある動作を特定する良い方法ですが、動作のスパイクを分析することだけがパフォーマンスの変化を示す指標ではありません。実際、ほとんどの実稼働データベースでは、パフォーマンスの変動は正常であり、予期されるべきものです。データベース管理者は、予想される変動を考慮し、予期しないものを呼び出す方法を必要としています。
Database Performance Analyzer(DPA)のスマートなSQLデータベース異常検知は、スパイクを越えて、予想される変動を考慮し、何か予期せぬことが起きたときに指摘することができます。この異常検知ツールは、そのような事象をハイライト表示し、標準から逸脱した事態を知るための複数の方法を提供します。
狭い知識に頼っていると、新しい人がそれを習得するのは難しいです。また、大規模な環境では、深く広く理解することができない場合もあります。狭い知識の必要性を排除し、Database Performance Analyzer(DPA)の機械学習アルゴリズムに正常な動作パターンの「理解」の自動化を任せましょう。重要なリソースが異動したときに知識が流出しないように、知識を自動化して保持し、チーム全員の利益につなげます。
DPAの機械学習アルゴリズムは、時間の経過とともに賢くなるように設計されており、より多くのデータを収集することで予測精度を向上させます。
使用例と導入範囲
当社では、Database Performance Analyzerを使用して、データベース全体の健全性におけるプロアクティブなパフォーマンス監視と異常検出を行っています。この製品によって、データベースパフォーマンスの全体像を初めて見ることができます。また、アラートとメール通知を設定することで、時間を大幅に節約しています。私たちが最もよく使うケースは、実行プランの変更に対応し、システムのエンドユーザーがパフォーマンスの問題や応答時間について不満を持ち始める前に適切な措置を取ることです。
長所と短所
(+)機械学習による異常検知 – バージョン12の新機能で、統計的分析が非常に便利です。
(+)日次と年次で作業量を比較することで、成長の全体像を把握し、キャパシティを考慮することができます。
(+)直感的なパフォーマンス分析 – 問題点を簡単に調べ、根本的な原因を見つけることができます。
(-)過去2回のバージョン12.0と12.1では、ソーラーウインドは素晴らしい機能拡張を行いました。現在、変更してほしいところはありません。ユーザー・インターフェースに多少の美観はありますが、問題だとは思っていません。
投資対効果
●定量的なデータは提供できませんが、実際にプラスの影響を与えた例をいくつか挙げることができます。
●インターネットバンキングのアプリケーションで、思うように動作しない点がいくつかありました。DPAを使用して、最も重いSQLクエリを特定し、ベンダーに変更依頼を開始しました。変更後、レスポンスタイムを1桁短縮することができました。
Database Performance Monitorのチューニング
私たちの組織では、テーブル・チューニング・アドバイザーを使って、ある MS SQL サーバーの統計情報を追加で作成しました。
ベストバリュー
環境のアップグレードの支援(該当する場合) – 私たちは、製品のバージョンからバージョンへのアップグレードを何度も行いました。一度だけ問題が発生しましたが、非常に迅速に修正されました。実は、その問題に対して私が推薦したのですが、彼らは最初に回避策を与えてくれました。全体的にとても満足しています。
使用例と導入範囲
データベースチームが、SQL ServerとAzure Databasesの両方で、データベースのパフォーマンスを監視し、チューニングするために使用しています。データベースの遅さ、Webサイトやサービス、アプリケーションでのタイムアウトは、データレイヤーが原因であることが多く、そのトラブルシューティングに最適なツールです。
長所と短所
(+)どのストアドプロシージャーのどのステートメントに作業が必要か、または致命的であるかを教えてくれる(該当する場合)。
(+)本当に作業が必要なものに注意を集中させることができ、非常に効率的です。
(-)監視するサーバーが多い場合、UIが不便になる。
(-)複数のサーバーにまたがる問題の順位付けができない。
投資に対するリターン
現在の勤務先ではなく、以前の勤務先での話です。データベースの変更を含む、大量のコードをデプロイしたことがありました。その翌日、そのデータベースサーバーに依存していたすべてのものがダウンし、サーバーはCPU、RAM、I/Oが100%になるまで叩かれました。何が問題なのかを正確に特定するのは非常に困難でしたが、Database Performance Analyzerを立ち上げて正確な問題を見つけるのにわずか数秒、そして問題のあった正確なprocにパッチを当てるのに1分もかかりませんでした。会社全体がビジネスに不可欠なサイトやツールからロックアウトされ、トレースやDMVなどの手段で問題を分析するのに何時間もかかったかもしれません。その代わり、ほとんど時間がかからなかった。
使用例と導入範囲
アラートを利用して問題を未然に防いでいます。パフォーマンスデータを使って問題を診断し、解決しています。ダッシュボードとドリルダウンを使って、現在の状況を把握し、うまくいっているかどうかを確認します。全体的なレスポンスタイムの急上昇や急降下を監視し、ユーザが体験しているUXの原因を理解しようとしています。
長所と短所
(+)この製品は、管理やパフォーマンスチューニングに必要なデータを、数秒で理解できるように可視化することに優れています。OracleのようなデータベースにはAWRレポートがあり、何ページもあり、すべてテキストで、読みにくいです。SQL Serverには動的な管理ビューがありますが、良いものですが簡単にアクセスできません。 Database Performance Analyzer (DPA)は、このようなレポートをすばやく理解し、実行できるようにレイアウトします。
(+)DPAは、実際に何が起こっているのかを教えてくれます。
例:開発者は、このストアドプロシージャはこのRDBMSでは非常に遅く実行されるが、別のRDBMSでは電光石火のように実行されると述べています。チューニングを試みたが効果がなかった。
そこで、DPAで数分かけて状況を調査したところ、ストアドプロシージャは正常に動作していることがわかりました。その代わり、アプリケーションがプロックに関するメタデータにアクセスしようとする際に、速度が低下していることがわかりました。その結果、メタデータをキャッシュするようになり、今では「遅い」プロックが快調に動作しています。DPAがなければ、微調整すべき正しいコードを探すのに長い時間がかかっていたでしょう。
(+)内蔵のアラート機能を使って、カスタムアラートを作成できるのは素晴らしいことです。カスタムアラートは、監視しているデータベースや、DPAが収集したデータから、OS、ストレージ、ネットワークなど、関連する部分まで情報を収集することができます。
(-)素晴らしい製品で、ほとんどのことがうまくいっています。必要な情報に少ないクリックでアクセスできるように、UIを改善し続けて欲しいと思います。
(-)DPAの競合他社が持っている機能で便利そうなのは、ジョブの実行時間をマッピングして、問題が発生したときに時間単位でマッピングできるようにすることです。
投資対効果
●問題発生時に対応するのではなく、問題を未然に防ぐことができるのは貴重なことです。顧客サービスのレベルも格段に上がりました。
●私が別の機会を求めて退職することを聞いた開発部の不機嫌な部長は、「今までいた最高のDBAをどうして手放すんだ」と上司を叱咤激励しました。 Database Performance Analyzerを使って提供できるサービスのレベルが、私が優れたDBAになるのに役立ちました。
Database Performance Analyzerの貴重な洞察
あるデータベースサーバーで、サードパーティの製品を使用していました。DPAのバーチャートは、1つのSQL文による多くの待ち時間を表していました。その文は実行に数ミリ秒しかかかりませんが、1日に数百万回実行されていました。どうしてその文がそんなに頻繁に実行されなければならないのか?私の上司の上司が、そのデータベースを作成している会社のオーナと知り合いで、私が見つけたものを送ってくれたのです。そして修正してもらったのです。
Database Performance Monitor のチューニング
[Table Tuning Advisors]は、全体的なガイダンスを与えてくれます。しかし、Query Advisorsは、しばしば特定の提案インデックスを持ち、それをコードウィンドウにコピー&ペーストするだけで、多くのことができます。私はしばしば、実行する前にそれらを微調整し、一部は役立ちませんでしたが、全体として、それらはパフォーマンスにとって非常に有用でした。大きなテーブルで適切なインデックスを使用すると、パフォーマンスが文字通り何百倍も、時には3,000%も向上することがあるのです。
仮想化データベース
そのためには、問題があなたのVMにあるのか、それともホストにあるのかを理解する必要があります。サーバ管理者とオーバープロビジョニングについて議論する必要があるのか、それともデータベースサーバーのVM内でよりコントロールできる問題なのかを?
DPAの1週間あたりの時間節約額
一人当たり週0-4時間の時間節約 :アラートがないと、反応モードで時間を浪費し、顧客のエクスペリエンスが損なわれます。分析と棒グラフがなければ、問題を診断して修正するために時間を浪費することになります。何度もクエリーを実行する必要がある場合、全体像を一目で把握することができず、時間を浪費してしまいます。
推薦する可能性
管理するインスタンスが何十台もある場合、ダッシュボードはとても便利です。履歴が残るので、昨日や週末に起こった問題を診断したり、毎日同じ時間に起こるのか、毎週同じ曜日に起こるのか、などのパターンを確認することができます。
ランサムウェア対策のための13のベスト・プラクティスを紹介しています。
https://www.climb.co.jp/faq/faq-category/ransamware-best13
ブログでも各種ランサムウェア対策を紹介しています。
暗号化により、許可された者だけがあなたの情報にアクセスできるようにします。あなたの情報が定義されたセキュリティ・ドメインから離れるとすぐに、あなたの情報があらかじめ定義された適切なレベルで暗号化されていることを確認します。暗号化自体は干渉を防ぐものではありませんが、権限のない第三者があなたの情報を読むことを禁止することができます。暗号化は、他のセキュリティ対策が失敗した場合に、機密データを保護するのに役立ちます。
デジタル健康法はレジリエンスを高めるための重要な要素です。定期的にバックアップをとっていれば、サイバー脅威は災害ではなく、むしろ不勝手なものになります。1日分の仕事を失うことはあっても、すべてを失うことはないでしょう。特定の種類のデータをどれくらいの頻度でバックアップするか、クラウドサービスを使うか、物理デバイスを使うかは、必要なサービスやセキュリティレベルに基づいて選択する必要があります。
ランサムウェアは、ファイルを暗号化することで、自分自身のデータからあなたを締め出す。このため、適切なバックアップはこの種の攻撃から回復するための優れた方法です。バックアップがあれば、暗号化されたファイルを最近のバックアップリポジトリにあるコピーと簡単に交換することができます。バックアップに戻すと、最新のデータの一部を失うかもしれませんが、サイバー犯罪者にお金を払ってファイルを復元してもらうよりは確実によいでしょう。
日常生活において、私たちは個人の衛生や清潔さを重要視しています。手を洗うことで感染症の蔓延を防ぐことができることは周知の事実であり、清潔さを保つことは日常生活の基本です。
しかし、脅威や脆弱性が増加し、デジタルとの接点が広がるにつれ、デジタル・インフルエンザに感染する危険性が常に存在することになります。実際のインフルエンザと同じように、いくつかの基本的なデジタル衛生習慣に従うことで、デジタル世界を移動する際のリスクを低減する方法があります。優れたデジタル衛生習慣に従うことで、データを健康に保ち、プライバシーを保護し、セキュリティを損なわないようにすることができます。
重要な実践例:
– 各ログインソースにユニークなパスワードを作成する。こうすることで、あるパスワードが破られたとしても、盗まれたパスワードで他のアカウントにアクセスされることがなくなります。
– パスワードマネージャーを使用する。100を超えるパスワードを覚えるのは大変です。優れたパスワードマネージャーを使えば、すべてのログイン情報を管理でき、固有のパスワードを簡単に作成し、使用することができます。
– 多要素認証(MFA)を利用する。MFAを設定することで、さらなるアカウントの安全性を確保することができます。
– 堅牢なパスワードポリシーを使用する
– アカウントのロックアウトポリシー
– 未使用のデバイス、アプリケーション、退職した社員、必要のないプログラムやユーティリティを削除する。
– パッチ管理:使用中のソフトウェア、ハードウェア、ファームウェアがすべて最新のソフトウェアレベルで動作していることを確認する。
職務分掌は、企業の持続的なリスクマネジメントと内部統制の基本的な構成要素である。これは、セキュリティに関するタスクと権限を複数の人に分散させるという考え方です。一人の人間がすべてをコントロールできるべきではありません。つまり、一人の人間がすべてを削除する能力も持ってはいけないということです。例えば、ある人が本番環境をコントロールし、別の人がバックアップ環境をコントロールすることです。バックアップの実践においても、プライマリバックアップシステムとは異なる認証と管理下にあるデータのセカンダリおよびオフサイトコピー(すなわちDR)を持つことは、ベストプラクティスと考えられています。
最終的に、すべてのセキュリティは、貴重な資産を保護することです。この場合、それはデータですが、その保護には、すべてのレイヤーを含む徹底的な防御戦略が必要です。徹底的な防御戦略を行うには、最も価値のあるデータを特定し、その周りに防御の層を構築して、可用性、完全性、機密性を保護する必要があります。セグメンテーションとは、インフラストラクチャーをゾーンに分割することで、必要なアクセスレベル、共通の制限ポリシーによる制約、ゾーン内外での接続性などを考慮して、オブジェクトを論理的なゾーンにグループ化することです。
ゾーンとは、特定の特性、目的、用途、および/または特定の制限のセットを持つ領域のことです。ゾーンを使用することで、多くの種類のリスクを低減するための効果的な戦略を持つことができます。より詳細かつ効果的な方法で環境を保護しながら、それに関連するコストを削減することができます。すべてを同じレベルで保護するのではなく、システムや情報を特定のゾーンに関連付けることができるようになりました。さらに、規制遵守の対象となるシステムをサブゾーンにグループ化することで、コンプライアンスチェックの範囲を限定できるため、長時間の監査プロセスに必要なコストと時間を削減することができます。
この原則は、ユーザーアカウントまたはプロセスに、その意図する機能を実行するために絶対に必要な権限のみを与えることを意味します。最小特権の原則は、障害や悪意ある行動からデータや機能を保護するための重要な設計上の考慮事項として広く認識されています。
複雑すぎる設計はITチームにとって管理が難しく、攻撃者が弱点を突いたり、影に隠れたりすることを容易にします。管理しやすいシンプルな設計は、基本的に安全性が高いのです。K.I.S.S.(シンプルでわかりやすく)の原則に基づき、設計を行うようにしましょう。
既存のインフラにセキュリティを追加することは、既存のインフラを強化することを考えるだけでなく、新しいインフラや刷新されたインフラを設計するよりもはるかに難しく、コストも高くつきます。仮想インフラストラクチャでは、最初からセキュリティが確保されたマスター・イメージを構築するのがベターな方法です。既知の攻撃ベクトルをすべて取り除き、コンポーネントが追加され、正しく機能するために特定のオープン化や追加ソフトウェアが必要な場合にのみアクセスを開放することが、ベストプラクティスと言えます。こうすることで、すべてのビルドに一貫性が生まれ、最新の状態に保たれるため、安全なベースラインが構築されます。
3-2-1ルールは、データを保護するための業界標準であり、ランサムウェアとの戦いにおいて究極の防御策となります。このルールでは、重要なデータそれぞれについて、少なくとも3つのコピーを保管し、バックアップデータを2つの異なるメディアに保存するよう求めています。また、データのコピーを1部、オフサイトに複製します。