1


0

キャッシュレイヤーが非常に多いMySQL、Postgresql、MongoDBの速度をベンチマーク/テストする方法は?

SQLite3では、サーバーがなく、各書き込みがSQLite3を終了するため、少なくともキャッシュされたページは保持されないため、直接キャッシュすることはできません。

しかし、MySQL、Postgresql、またはMongoDBの場合、データが既に保存されていると考えられる場合、実際にはDBMSのメモリキャッシュにあるレイヤーがあります…​ 後でディスクに書き込まれます。

また、ディスクに書き込まれる場合でも、ディスクに書き込まれるセクターを保持するOS層があります。

そして、ハードドライブのキャッシュがあります。 8MBなので、テストでデータを挿入して800MBのデータベースを作成する場合、エラーは1%以下になる可能性があります。

しかし、他のレイヤーはどうですか? OS層までずっとフラッシュする必要があります。 それ以外の場合、4GBのRAMまたは8GBのRAMを搭載したコンピューターでは、非常に高速であると考えられる場合、データベース全体がRAMに簡単に常駐できます。 データをハードディスクの物理層まで、または少なくともOS層からフラッシュするようにテストに指示するにはどうすればよいですか?

1 Answer


1


ベンチマークを実行しているとき、キャッシュを含めて、OSまたはCPUレベルまでのすべてのレイヤーで速度の最適化をすべて無効にすることはできません。 あなたはそれを必要としません。 できることは、システムのさまざまなライフサイクル状態でパフォーマンスをベンチマークすることです。 また、(およそ)いつキャッシュするデータがわかっている場合は、その前後にベンチマークを実行できます。 たとえば、クリーンスタート、最初のDBデータセットアクセス、後続のDBアクセスなど。 最初にボトルネックを確立してから、そこでのみ詳細にベンチマークを行うのが最善です。 もう1つの良い方法は、実際のシステム負荷をシミュレートし、それをベンチマークすることです。 合成ベンチマークは実質的に無意味です。 がんばろう ;)