sql >> Database >  >> NoSQL >> MongoDB

Aanhouden en doorspoelen - Doctrine en MongoDB

Ik heb een benchmark gemaakt om flushes van een eenvoudig document met twee velden in verschillende batchgroottes te profileren: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

Zoals je zou verwachten, vormt het daadwerkelijk invoegen van de gegevens in Mongo slechts een klein deel van deze metingen. Doctrine gaat behoorlijk wat tijd besteden aan het doorlopen van stappen zoals het verzenden van gebeurtenissen en het berekenen van wijzigingensets, waarvan de laatste aanzienlijk wordt beïnvloed door de complexiteit van uw domeinmodel.

U kunt alle Doctrine-specifieke bewerkingen traceren in flush() door een kijkje te nemen op UnitOfWork::commit() .




  1. blpop stopt na een tijdje met het verwerken van de wachtrij

  2. Geneste $addFields in MongoDB

  3. Vraag om gegevens van de laatste X minuten met Mongodb

  4. Hoe kan ik een JS-scriptbestand van Pymongo uitvoeren?