sql >> データベース >  >> NoSQL >> MongoDB

永続化とフラッシュ-DoctrineとMongoDB

    さまざまなバッチサイズの単純な2フィールドドキュメントのフラッシュをプロファイルするためのベンチマークを作成しました: https://gist。 github.com/2725976

    $ php src/benchmark.php 10 100 1000 10000 20000 50000 100000
    Flushing     10 items took  0.014058 seconds and   2097152 bytes
    Flushing    100 items took  0.024325 seconds and    524288 bytes
    Flushing   1000 items took  0.196992 seconds and   5505024 bytes
    Flushing  10000 items took  2.563700 seconds and  57933824 bytes
    Flushing  20000 items took  6.291873 seconds and  89915392 bytes
    Flushing  50000 items took 19.118011 seconds and 240386048 bytes
    Flushing 100000 items took 58.582809 seconds and 469499904 bytes
    

    ご想像のとおり、実際にデータをMongoに挿入すると、これらの測定値のごく一部しか占められません。 Doctrineは、イベントのディスパッチやチェンジセットの計算などの手順を実行するのにかなりの時間を費やします。後者は、ドメインモデルの複雑さに大きく影響されます。

    flush()でDoctrine固有のすべての操作を追跡できます UnitOfWorkを見てください: :commit()




    1. パフォーマンスを損なうことなく、MongoDBでいくつのコレクションが可能ですか?

    2. pub-subパターンのzmqとredis

    3. mongodbでハッシュ化されたインデックス付きキーのハッシュの範囲をクエリすることは可能ですか?

    4. redis.confのmaxmemoryパラメータ