MonetDBを使った経験はありますか?現在、MySQLデータベースが大きくなりすぎて、クエリが遅くなりすぎています。列指向のパラダイムによれば、挿入は遅くなりますが(私はまったく気にしません)、データの取得は非常に速くなります。MonetDBに切り替えるだけで、データ検索のパフォーマンスが向上する可能性はありますか?MonetDBは十分に成熟していますか?
2 に答える
アプリケーションのパフォーマンスを向上させるチャンスがあります。ただし、ゲインは、ワークロード、データベースのサイズ、およびハードウェアに大きく依存します。MonetDBは、次の2つの主要な前提の下で開発/調整されています。
- ワークロードは分析的です。つまり、(グループ化された)集計などがたくさんあります。
- さらに重要なのは、ホットデータセット(実際に操作するデータ)がシステムのメインメモリに収まるということです。MonetDBには独自のバッファマネージャーはありませんが、ディスクI/Oを処理するためにOSに依存しています。OS(特にWindowsですがLinuxも)は、問題になる可能性のあるディスクスワッピングについて非常に愚かである場合があるため(特にメモリが不足する結合の場合)。
成熟度に関しては、おそらくこの惑星に住む人々よりも多くの意見があります。個人的には十分に成熟していると思いますが、私は開発チームのメンバーであるため、偏見があります。しかし、MonetDBは研究プロジェクトであるため、興味深いアプリケーションがある場合は、それについて聞いて、私たちが支援できるかどうかを確認したいと思います。
もちろん、答えはペイロードによって異なりますが、これまでの私の経験では、MonetDBではMySQLで見たよりもすべてが高速であることが示されているようです。例外は結合です。これは遅いように見えるだけでなく、パイプライン処理が完全に不十分であるように見えるため、大きなものを処理するために大量のメモリが必要になります。とはいえ、MySQLでの結合に関する私の経験も、必ずしも素晴らしいものではなかったので、あなたの期待は低いかもしれないと思います。本当に優れた結合パフォーマンスが必要な場合は、SQLServerなどをお勧めします。フォローアップコメントで言及する他のクエリについては、MonetDBは素晴らしいはずです。
たとえば、約200万行のテーブルがある場合、1つの列で範囲を指定し(範囲内に約800K行があった場合)、別の列で並べ替えることができ、限られた結果が処理され、25ミリ秒で返されました。これらのタイプのクエリのパフォーマンスは規模とともに低下するように見えますが、それはあなたがその規模で期待するかもしれないものの味をあなたに与えるはずです。
楽観的並行性モデルは、悲観的並行性にのみさらされたモデル(ほとんどの人)を捨てる可能性があることに注意する必要があります。同時ロードでコミットの一部が失敗する理由を疑問に思う前に、調査します。