Google BigTables(およびその他の統合DB)でのパフォーマンステストの取得と配置


17

特にデータベース自体が専用ツールを提供していない環境で、データベース操作のプログラムによるパフォーマンステストを実行するための効果的な方法は何ですか?

たとえば、Google App Engineでは、ページ読み込み全体が特定のデータベース操作を含む1つの操作として評価されます。この問題は、SQLiteやその他の統合DBにも存在する可能性があります。テストが必要な選択および挿入(と同等)を完全に抽象化することは困難なので、これらの種類のクエリでより徹底的な診断を実行するための推奨データベースツールはありますか?


問題のデータベースに直接アクセスできますか?
-Stingervz

はい、アプリを書いているのは私です。アプリのパフォーマンスは別の質問ですが、私が書いた厄介なクエリでは、かなり深刻なパフォーマンスヒットが発生しています。
ブライアンボールサンスタントン

時々 、目のダースのペアは(OKでないことが多い)...より良い診断クエリアナライザより
jcolebrand

@ブライアンこのタイプの質問は、DBAの質問よりもプログラミングの質問の方が多いため、Stackoverflowの方がうまくいくと思います。
IamIC

@IanC Drat。パフォーマンス全体ではなく、ビッグテーブルのアンダーレイに到達しようとしています。しかし、質問が適切だと思わない場合は削除します。(サイトが常にoracle / sql-server / mysqlではないことを保証しようとしています)
ブライアンボールスンスタントン

回答:


1

あなたの問題は、基礎となるデータベースで十分にサポートされていないパフォーマンスメトリックをテストしようとしているということです。基礎となるアプローチが非常に異なるため、これにより、システム間でパフォーマンスを比較することが非常に難しくなります。ORDBMSタイプのアプローチとRDBMSタイプのアプローチを比較することはできないと考えているのと同じように、リンゴとリンゴを比較することは不可能だと思います。パフォーマンスの問題はあまりにも異なっており、TPC-Cテスト用にORDBMSを最適化してもポイントが失われるとStonebrakerが正しい場合は、さらに離れているシステムでは不可能になります。(ただし、彼はORDBMS機能が機能する場所にのみいると思います。)

正直に言う必要があるのは、各システムをどのように使用するかを検討し、各システムで使用するアプローチに基づいてベンチマークツールを構築することだと思います。その後、少なくともそのワークフローでは、ベンチマークが特定の何かを示していると言うことができます。しかし、どのように一般化できるかわかりません。プロファイラーでさらに実行して、さまざまなエンジンでのテスト実行に時間を費やしている場所に関する追加情報を取得できます。

ただし、最高の状況でdbベンチマークを意味のあるものにすることは非常に困難であり、異なるシステムを比較する場合、一般化することは不可能になります。


0

Appstatsは、App Engineのパフォーマンスを測定するための重要なツールです。データストア、memcache、urlfetch、メールリクエストなど、各RPCに使用された時間がグラフで表示されます。通常、リクエストは「階段」として表示され、各リクエストは、前のリクエストが終了した時点から次の行に始まります。

ndbで高度な非同期リクエストを使用すると、実際にリクエストが並行して発生することがわかります。

このツールは、どこで時間が費やされているか、クエリを最適化する方法を知る上で、私にとって非常に役立ちました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.