gpt4 book ai didi

mongodb - 坚持和冲洗 - Doctrine 和 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 09:37:34 24 4
gpt4 key购买 nike

flush() 有多快?我正在使用 persist() 将几千项添加到集合中,然后清空集合然后刷新它。

$dm = $this->get('doctrine.odm.mongodb.document_manager');

while(stuff))
{
$item = new Item();
$item->setItem("item stuff");
$dm->persist($item);
}

$qb = $dm->createQueryBuilder('Bundle:Item')->remove();
$query = $qb->getQuery();
$query->execute();

$dm->flush();

我想知道集合将空置多长时间。在删除和刷新之间。

最佳答案

我创建了一个基准来分析不同批量大小的简单两字段文档的刷新: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 将花费相当多的时间来完成事件调度和变更集计算等步骤,后者将受到域模型复杂性的显着影响。

您可以通过查看 UnitOfWork::commit() 来跟踪 flush() 中所有特定于 Doctrine 的操作.

关于mongodb - 坚持和冲洗 - Doctrine 和 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10639772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com