7

私はこれについて間違っているに違いありません。プロジェクトでmongodbを使用することを検討していますが、これを読みました:

http://docs.mongodb.org/manual/faq/concurrency/#what-type-of-locking-does-mongodb-use

mongodb はデータベース レベルのリーダー/ライター ロックを使用すると書かれています。

MySQL InnoDB は行レベルのロックを使用します。理論的には、mongodb は MySQL よりも同時アクセスが 2 レベル遅いということではないでしょうか。

4

2 に答える 2

-2

はい、その通りです。現在、MongoDB は排他的なデータベースごとの書き込みロックを実装していますが、これは MySQL の MyISAM ストレージ エンジンのテーブルごとの書き込みロックよりも同時実行性の観点からさらに悪いものです。

ここから:

バージョン 2.2 以降、MongoDB はほとんどの読み取りおよび書き込み操作に対してデータベースごとにロックを実装しています。

2.2 バージョンまでは、mongodインスタンス全体で 1 つのグローバル ロックを使用するため、さらに悪化していました。

PS:また、MongoDB は、(物理 RAM ではなく) 仮想メモリにマップされたメモリ マップ ファイルを使用し、毎秒 (ジャーナリングなしで) データをディスクにフラッシュします。先行書き込みログ (ジャーナル) では、グループ コミットが特定の時間間隔で実行されるため、データも永続的ではありません。そのため、耐久性がなく、メモリ内ストレージも同時に受け取りません。

于 2013-10-12T04:22:36.377 に答える