2009-07-17 76 views
6

在這個問題的基礎上,詢問一切:executeBatch方法的有效性如何?是否有性能基準,說..如果你有1000條記錄要插入,使用executeBatch而不是executeUpdate可以節省x個數據庫週期?Prepared Statement上的executeBatch有效嗎?

或者這只是一個約定?

編輯: 以下是我正在使用的:在Z/OS上託管的DB2 V 8.1,這是一個Web應用程序,它將一次性插入80,000條記錄,在最糟糕的情況下執行。

+2

而不是讓每個人都給你毛數,爲什麼不自己嘗試並衡量它?只有你可以知道你從設置中獲得多少好處。 – skaffman 2009-07-17 12:52:54

+1

@skaffman我不想做那些被普遍稱爲過早優化的東西。然而,我想知道它的速度有多快。 – Jay 2009-07-17 12:56:00

+0

我明白,但是如果沒有一點基準,你無法做出明智的選擇。 – skaffman 2009-07-17 13:04:31

回答

8

不確定你正在使用哪個數據庫。當我運行一個測試這個使用DB2,這是我所看到的:

要寫入數據庫:

1插入花了2500微秒。

10個插入花了6000微秒。 (每寫600微秒)

10000插入花了大約100萬微秒。 (每寫100微秒)

表現最大。 所有這一切意味着發送消息有很大的開銷,並且使用批處理方法可以最大限度地減少這種情況。當然,如果應用程序崩潰,以大批量方式發送插入/更新會有失去它們的風險。

另外值得注意的是:確切的數字會根據您的數據庫和設置而有所不同。所以你必須找到你自己的「甜蜜點」。但是這給了你一個想法。

1

我不確定你在問什麼,但是對於插入成千上萬行,批量聲明是極大地加快了。不過,我不能給你數字。

+0

@skaffman這是我的問題 - 它有多快?你能給我一個近似嗎? – Jay 2009-07-17 12:49:52

1

根據我的經驗,它顯着更快 - 即使您一次只插入/更新一些記錄。如果你正在做一個以上的更新,我會幾乎總是建議對它們進行批處理,如果有意義的話。

也就是說,你必須做一些實際的測試來找出你的特定情況下的性能改進。

0

JDBC規範第14章說,提交多個SQL語句,而不是 獨立,可以極大地提高性能

0

在batchExecute()update語句花費更多的時間,然後insert語句我特林與5001 INSERT和UPDATE陳述 性能比率是15:84

相關問題