今日、企業にとってデータベースの性能にかかるコストとは何でしょうか?実際、ほとんどの経営者は、この質問に含まれるすべてのことを理解し始めるとは言えません。
筆者は、システムが経営者のやりたい仕事は速すぎるという理由で、私に連絡してきたことはありません。しかし、インデックスのチューニングと簡単なコードの変更で重要なボトルネックを取り除き、システムを壊したと非難されたことはあります(24時間以上かかっていた処理を1分未満で実行できるようにした)。
問題は、SQL Serverやその他のツールがパフォーマンス低下の原因となっていることを、殆どの経営者が知らないことです。では、データベースのパフォーマンス低下の実際のコストはどれくらいなのでしょうか?
コストといえば、金銭的な影響がまず思い浮かぶのは間違いないでしょう。しかし、データベースのパフォーマンス問題のコストは、金銭的な側面だけでは済まないことがあります。
データベースの設計によってパフォーマンスが制限され、その結果、新しい機能を実装する柔軟性が失われるとしたらどうでしょう。データ品質の低下やデータの重複による影響はどうでしょうか。パフォーマンスの問題が続くことで、ビジネスにとって最も重要な資産の一つである、絶え間ない消火訓練にうんざりしている社員が持つビジネス知識を失う危険性もあります。データベースのパフォーマンスは、クエリの実行にかかる時間をはるかに超えており、不十分な設計とアーキテクチャに内在する非効率のコストは、驚異的です。
目次
データベース・パフォーマンスの低下によるコストの計算
これまで、筆者はシステムの可用性に関連するコストを定量化できる企業で働いたことが一度だけあります。コスト計算の基本は、顧客サービスのコールセンターへの影響を測定することでした。当然、ダウンタイムが発生すると、自動化されたシステムによるセルフサービスが利用できないため、コール数が増え、顧客の日常的な要望をサポートする機能が阻害されることになります。
しかし、この計算方法には、問題解決にかかる時間や、手作業のプロセスを維持するために失われる時間が考慮されていないことが問題でした。システムの脆弱性という総合的なコストは考慮されていなかったのです。
また、このシステムには本当の意味でのデータベース管理者がいませんでした。せいぜい「障害対応DBA」と呼ばれる、自分が一番上だからという理由で責任を負う人がいる程度だった。そのため、この会社のIT開発部門には、複数の負荷の高いプロセスが互いに影響し合ってシステムが停止することがないように、手作業でバランスを取るためだけの新しい役職が設けられました。
データベースパフォーマンスの低下の原因を特定する
では、何が問題だったのでしょうか。ハードウェアの性能が低いのか?ストレージの問題か?コードやデータベースの設計に問題があったのでしょうか?見方によっては、そうかもしれません。
SQL Server のパフォーマンスチューニングにおいて、インデックスが重要であるという貴重な教訓を早くから学んだのは、まさにこのシステムでした。これはSQL Server 6.5、そしてSQL Server 2000の頃の話ですが、データベースエンジンはインデックスの欠落のようなものを追跡することはありませんでした。以前は24時間もかかり、その間ずっとサーバのCPUは最大値でした(しかも、変更後の実行時にはCPU使用率がほとんど上がりませんでした)。
問題はすべてデータベースの設計にあったと言えるのでしょうか?そうとも言えるし、そうでないとも言えます。なぜ、その両方が同時に起こるのでしょうか?インデックスを持たない同じデータベースは、少なくともそれが再び問題となるまでに助長するには、今日のハードウェアではおそらく問題なかったでしょう。
インデックスなしでテーブル全体をスキャンするコストは、システム性能の最大の問題でした。請求項目、会計台帳、請求書履歴、ガス使用履歴テーブルなど、データベースの中で最も大きなテーブルに数個のインデックスを追加することで、システムに関連する頭痛の種は本質的にすべて解消されました。また、システムのプロセスが重なって問題が発生しないか、手動で監視する必要もなくなりました。当時のハードウェアは、既存の32ビットプラットフォームの制限と同様に、パフォーマンスに対する大きな制限となっていました。システムをどのように見るかによって、パフォーマンスの問題は、前述の可能性のどれかになっていたかもしれません。
データベース性能の低下がビジネスに与える真の影響を理解する
筆者の場合、インデックスが作成された結果、2つの興味深いことが起こりました:
1.システム性能の新しい基準ができた:システム・パフォーマンスに関する新しい基準ができたのです。今後行われるすべての変更は、この新しい基準に照らし合わせて、パフォーマンスへの影響、さらにはQAマネージャーが「停止」と判断した場合の1分あたりのコストまで、ベンチマークされることになりました。
2.開発者は、大きなテーブルを何度もスキャンする高いコストに追われるシステムを子守する代わりに、実開発ができるようになりました。開発者は、突発的なDBAの役割や消火活動に追われることなく、新しい機能に集中できるようになったのです。
このことは、ビジネスにとってどんな意味があったのでしょうか?つまり、規制緩和に伴い、新しいガスサービス市場を開拓し、顧客ベースを拡大することができたのです。また、規制緩和された市場で、当初のプロジェクト計画よりも1年早く電気サービスを開始することもできました。このようなパフォーマンスの問題を長期的に解決せず、成長に集中することなく、物事をうまく進めるために人々を忙しくさせることのコストを想像してみてください。
これは、データベースのパフォーマンスが金銭的な問題だけでなく、ビジネスに大きな影響を与えた例の1つです。ある会社では、開発者の離職率が非常に高かったのですが、その主な理由は、新入社員がコードを書くよりも監視に追われたり、問題のトラブルシューティングに追われたりすることでした。彼らの唯一の頼みの綱は、偶然居合わせたDBAを呼び寄せることでしたが、そのDBAもまた、辞めるに辞められない状態だったにもかかわらず、居座り続けていました。このようなパフォーマンスの問題が長く続くと、ビジネスにとって最も重要な資産の1つである、創業当時からの社員が持つビジネス見識を失う危険性がありました。データベースのパフォーマンス低下による新たな高コストが発生したのです。
ビジネス・ナレッジ:最も貴重なコスト
人という体は交換できても、ビジネスやプロセスについて知っていることは交換できません。クライアントの問題を解決するために別のコンサルタントを雇うことができるのは間違いありません。筆者がガス会社の仕事を辞めたとき、クライアントはビジネスに関する知識を大きく失うことになりました。筆者は、課金システムのおそらく4分の3の仕様を書き、さらに開発者としてその背後にある膨大な量のコードを書き換えていました。私は、「なぜ」そうなのかというビジネス知識をたくさん持っていたので、会社は私コンサルタントとして雇い直し、知識の移転、さらなるドキュメントの提供、コーディングの問題の解決に当たらせました。
このブログを読んでいる人の中には、パフォーマンスが常に争点となるシステムの中で、一貫して消火活動を行うことで生じる燃え尽き症候群に共感している人が絶対にいるはずです。しかし、私たちの仕事の性質上、私たちは一般的には山林火災対応部隊のようなもので、ホットスポットに飛び込み、他の人が戦い続けるための息抜きを作るようなものです。
データベースのパフォーマンス低下によるコスト負担は?
データベース・パフォーマンスの問題がビジネスにもたらすコストをご存知ですか?データベースのパフォーマンス問題に関連する高率の消火活動や燃え尽き症候群のために、従業員を失ったことがありますか?データベースのパフォーマンスがビジネスの成長を制限し、ライセンスやハードウェアのコストを長期にわたって段階的に増加させることについて、何らかの洞察が得られたらいいと思いませんか?
Database Performance Analyzer(DPA):監視・最適化ソリューションは、データベースの健全性についてより深い洞察を提供し、オンプレミスからクラウドまで、データベースがどこにあっても通常数分でパフォーマンスの問題を突き止めることができるように設計されています。
ある熟練データベース・コンサルタントの経験話から
関連したトピックス
- Database Performance Analyzer [DPA] でSQL Serverのパフォーマンスを見つけ、分析し、最適化へ
- Oracle SE データベースと Query Performance Analyzer [Oracle Performance Analyzer: DPA]
- メモリとインスタンスのパフォーマンス監視のためのAmazon AWS EC2 Monitor [DPA]
- Db2 パフォーマンス最適化・チューニングツール [DPA]
- MySQLスロー・クエリログ・アナライザ [DPA]
- 待ち時間分析によるOracleからPostgreSQLへの移行のトラブルシューティング:Database Performance Analyzer(DPA)
- 仮想化されたデータベース:パフォーマンス監視の考慮事項
- Webセミナー録画とプレゼンテーション『 Oracle コンサルいらずのチューニングことはじめ』:2020/2/6 開催
- Amazon AWSクラウド上でのアプリケーションとデータベースのパフォーマンス問題
- Database Performance Monitor :データベースの監視と効率化を行うSaaS型ソリューション