2012-10-15 142 views
0

我開發了一款應用,最近我已經抓住了我的思想。以下哪項具有更好的性能?數據庫提交性能

  1. 執行單一提交1000個實體。
  2. 在每次提交時執行20次50個實體的提交。

你怎麼認爲會是實現可靠的?

回答

0

知道的唯一方法是測試 - 你需要用這兩個選項多次測試,用真實的數據來找出哪些人會表現得更好。

一般來說,然而,昂貴的資源是

  • 建立數據庫連接在網絡上

由於數據量是一樣的,你只是創建多個

  • 傳送數據連接第二個選項。這可能比你的第一個選擇表現更差。

  • +0

    所以你要說它是不可能執行承諾DB多次,同時建立一個連接? –

    +0

    @MichaelZ - 你可以。我沒有看到你的問題,表示你正在使用單個連接,但在循環中打開和關閉連接。但是,即使您可以重新使用連接,連接通常也會被合併,因此您無法確定使用相同的連接。 – Oded

    0

    通常數據庫都是爲了向基於集合運算,而你越一氣呵成做的,更好的整體性能(即我一般的猜測是,選項1是最快的)。當然有限制,不同的數據庫行爲有所不同。例如,您在任何時候都有更多未提交的工作,您的日誌文件必須更大。如果中間出現問題,您還需要權衡回滾多個批次的額外複雜性。

    由於您使用的休眠,你可以設置batch-size參數各種不同的值,看看有什麼最適合你。我非常幸運,在SQLite中值爲'20',在MySQL中值爲'100'。