db 'x'のパフォーマンス、または 'x'から 'y'に移行するとサイトのパフォーマンスが向上するという議論が飛び交っています。
さまざまな種類のデータベース間で機能する適切なベンチマークをまだ見ていません。
リレーショナル、ドキュメント指向など、複数のDBタイプで使用できる意味のあるベンチマークを作成することは可能ですか?
そのようなベンチマークをどのように設計しますか?
db 'x'のパフォーマンス、または 'x'から 'y'に移行するとサイトのパフォーマンスが向上するという議論が飛び交っています。
さまざまな種類のデータベース間で機能する適切なベンチマークをまだ見ていません。
リレーショナル、ドキュメント指向など、複数のDBタイプで使用できる意味のあるベンチマークを作成することは可能ですか?
そのようなベンチマークをどのように設計しますか?
回答:
はい、注意して研究すれば、研究した事例の有意義なベンチマークを書くことができ、特定の事例に関連する場合、他の事例には当てはまらない可能性があることを理解できます。これは、同じタイプのデータベース(リレーショナルデータベースと別のリレーショナルデータベース)または異なるタイプのデータベースを比較する場合にも同様に当てはまります。
いいえ、すべてのアプリケーションにおいて、特定のデータベースが他のデータベースよりも優れていることを魔法のように証明するベンチマークを作成することはできません。
「データベースから別のデータベースに移動すると、サイトのパフォーマンスが向上した」と言うことは間違いなく可能です。
クエリに関する十分な情報とその速さを収集することにより、プロファイリングまたは実行時の統計を通じて以前のデータベースのパフォーマンスを測定します。
アプリケーションを新しいデータベースに移動します。
同じ措置を講じます。
あなたが比較します。
たとえば、3 182 432製品の完全なリストが2.834秒で読み込まれた場合。古いデータベースで、0.920秒でロードします。新しいデータベースでは、どちらの場合もアプリケーションのキャッシュが空であることを考えると、勝ちです。新しいデータベースにより、このクエリに関するサイトのパフォーマンスが向上しました。
現在、他のパフォーマンスメトリックと同様に、バイアスがかかっています。
同意して、新しいクエリはより高速です。しかし、DBAは以前のデータベースの使用方法を知らなかったため、すべての製品をロードするクエリは最適化されていません。そのように書き換えると、0.855秒でそれらの製品をロードできるようになります。2.834の代わりに。
わかりました、あなたはよりよい結果を持っています。しかし、3年前に最後の保守計画が実行された10年前のデータベースとフラッシュされたばかりの新しいデータを比較するのは不公平だと思いませんか?ところで、過去4年間に少なくとも1回はデータベース製品を更新すべきだったと思いませんか?
一部のクエリは高速です。遅いものもあります。新しいデータベースに移行するときに全体的なパフォーマンスが向上したことを知るために、平均結果をどのように計算しますか?わかりました、3 182 432製品すべてをロードする時間はより速いです。しかし、重要なのは、管理者が過去10年間に2回しか実行していない特定のタスクを実行しているまれなケースでのみ、クエリがWebサイトで実行されることですか?一方、新しいユーザーのホームページですべてのクエリを実行すると、0.281秒無駄になります。新しいデータベースでは、0.207秒でした。古いデータベースで。この結果は、特にこれらのクエリを長時間キャッシュすることができず、1日に数万回実行されるため、より重要です。
両方のデータベースは、同じサーバー、同じハードウェア、同じ構造でテストする必要があります。たとえば、1つのハードドライブで1つのデータベースをテストし、2つのSSDのRAID1でもう1つのデータベースをテストすることはできません。大規模なプロジェクトを新しいデータベースに移行する場合、以前のデータベースが以前のマシンに残っているときに、新たに展開された他の100台のラックサーバーで新しいデータベースをホストする可能性があります。
要約すると、アプリケーションのデータベースクエリをベンチマークし、正確なメトリックを取得できます。しかし、その後、数字に意味を与える必要があります。この状態では、サイトのパフォーマンスが向上したと言ってしまいがちです。そうしないと、管理者は、物事を遅くするためだけに何千ドルも何ヶ月も費やしたことを知り、怒ってしまいます。
最も恐ろしい間違いは、ベンチマークからこれらの結論を導き出し、「Microsoft SQL ServerはOracleよりも3倍速い」などの愚かさを結論付けることです。これは「JavaはPHPよりも優れている」と言っているようなものです。より良く定義する。どのような場合に優れていますか?どのようなアプリケーション向けですか?開発者のどのチームのために?
解釈して一般化すればするほど、物事は無関係で無意味になります。
select [...]
fileのリビジョン#832のProductFactory.cs
117行目にあるクエリは、0.5秒未満で実行されます。非機能要件の付録M、ケース3で指定された条件下でテストされた場合、新しいデータベースを使用します。これにより、非機能要件527を渡すことができます(80ページ、リビジョン9を参照)。テスト結果が0.9..1.3 sの範囲にある場合、以前のデータベースでは同じ要件は満たされていませんでした。同じ条件で。
開発者にとって意味があり、テストされたもの、方法、結果を知るのに十分な精度です。これで質問番号2に答えます。
悲しいことに、経営陣にとっては意味がありません。代わりに:
製品をMySQLからMicrosoft SQL Serverの最新バージョンに移行すると、製品の全体的なパフォーマンスが5向上し、同時にコストが2削減され、環境フットプリントが3削減されました。来年、すべてのアプリケーションをMicrosoft SQL Serverに移行すると、さらに良い結果が得られ、市場競争力が高まると考えています。
は、純粋なマーケティングの大げさで、技術的には何の意味もありませんが、驚くべきことに、管理部門とマーケティング部門にとって価値があります。
最後に、異なる種類のデータベースを比較できますか?それは完全に可能だと思います。大きな写真をホストしているWebサイトがあるとします。これらの写真はvarbinary(max)
Microsoft SQL Server 2005に保存されます(したがって、使用できませんfilestream
)。それらの写真をロードするときのパフォーマンスが心配なので、代わりにファイルシステムを新しいデータベースとして使用して、写真をファイルとして保存することにします。まず、これらのファイルはデータベースと同じマシンに保存されます。新しいソリューションのプロファイルを作成し、Microsoft SQL Serverよりもファイルシステムからのファイルの読み込みが4%速いことを示す結果を取得します。ベンチマークは非常に明確です。Microsoft SQL Server用に最適化されたサーバーを使用するのではなく、直接ファイルストレージ用に最適化された専用サーバーを展開することを考えることができます。
いいえ、それらの違いは、いずれか1つのベンチマークに偏りがあるほどです。
そうは言っても、広範囲のテストを含み、テスト(言語間の特定のテスト、または多くの言語の複合テスト)の比較を容易にするComputer Language Benchmarks Gameのようなサイトを開発することは、いくつかの利点があります(少なくとも私の目には)、特にコミュニティがソリューションを提出し、スキーマやクエリの欠点を改善できるようにセットアップされている場合はそうです。
DBベンチマークサイトの場合、アルゴリズムを実装する代わりに(言語シュートアウトの場合のように)、テストを保存してから特定の制約に従って取得する必要がある生データで構成することができます。たとえば、コミュニティライブラリが利用者や書籍を追跡するために使用できるものを表す単純なスキーマを表す情報を含む生データのセットがあるかもしれません。各DBは、100万レコードすべてを保存し、制約を満たすデータのサブセットを取得する必要があります。次に、1億のレコードを含む非常に単純な構造/関係(ESPNなどのサイトで通常使用されるコメントシステムなど)を表すデータセットがあり、実行する必要のある独自のクエリセットがあります。等。
幅広いデータセット(複雑なものから単純な関係、小さなセットから巨大なものまで)でDBをテストすることは、少なくとも、あなたがしているプロジェクトと同じ品質のデータの一般的な傾向を見ることができるので、非常に役立つことがあります現在評価中。
すべてのタイプのデータベースのベンチマークを実行できない理由をいくつか追加します。
データベースシステムには、OLAPとOLTPの2つの主要な方向があります(比較を参照)。
あなたが言ったように、リレーショナルおよびドキュメント指向のデータベースシステムもあります。RDBSはACIDの原則に厳密に従いますが、ほとんどのドキュメント指向のDBSでは、アプリケーションに対して弱いデータで十分であると判断できます。これにより、ロックとスケジューリングがはるかに簡単になります。
一言で言えば、ランボルギーニは世界最高の車であると主張することはないでしょう。トランクのボリューム、座席数、または燃費を考えてください。
補足説明として、OLTPデータベースシステムのベンチマークを以下に示します。