2012-10-15 64 views
0

我开发了一款应用,最近我已经抓住了我的思想。以下哪项具有更好的性能?数据库提交性能

  1. 执行单一提交1000个实体。
  2. 在每次提交时执行20次50个实体的提交。

你怎么认为会是实现可靠的?

回答

0

知道的唯一方法是测试 - 你需要用这两个选项多次测试,用真实的数据来找出哪些人会表现得更好。

一般来说,然而,昂贵的资源是

  • 建立数据库连接在网络上

由于数据量是一样的,你只是创建多个

  • 传送数据连接第二个选项。这可能比你的第一个选择表现更差。

  • +0

    所以你要说它是不可能执行承诺DB多次,同时建立一个连接? –

    +0

    @MichaelZ - 你可以。我没有看到你的问题,表示你正在使用单个连接,但在循环中打开和关闭连接。但是,即使您可以重新使用连接,连接通常也会被合并,因此您无法确定使用相同的连接。 – Oded

    0

    通常数据库都是为了向基于集合运算,而你越一气呵成做的,更好的整体性能(即我一般的猜测是,选项1是最快的)。当然有限制,不同的数据库行为有所不同。例如,您在任何时候都有更多未提交的工作,您的日志文件必须更大。如果中间出现问题,您还需要权衡回滚多个批次的额外复杂性。

    由于您使用的休眠,你可以设置batch-size参数各种不同的值,看看有什么最适合你。我非常幸运,在SQLite中值为'20',在MySQL中值为'100'。