2013-02-09 69 views
1

我注意到,當我使用db-> insert_batch函數Codeigniter切片行每100插入。什麼是最好的性能批量插入或切片多批次插入?

背後的原因是什麼?一次做所有事情都不是更有益嗎?

同樣從Codeigniter的角度來看,據我所知,不可能在一個連接中對多個表進行多次插入。

這三種情況之間的性能比較是什麼?

1- Do 2220插入一個連接。 20到一張桌子,200到其他桌子,2200到最後一桌。與CodeIgniter ActiveRecord庫建議(?)10一次在一個表中查詢,200在第二個表中在2個不同的查詢中,2000在20個查詢中插入到第三個表中,相同的插入。

3- 2220每行的不同查詢。

回答

0

據我所知,你只能插入到一個表在一個時間,所以#1#與3是沒有意義的,我(和你的數字對不上號)

的理由批量插入是因爲它們會導致高度限制性的寫入鎖定。根據數據庫引擎的不同,插入操作可能導致表級寫入鎖定,建立請求隊列並最終在池達到其限制時拒絕請求

批處理允許插入完成並偶爾釋放鎖,從而允許大概更快的查詢在再次鎖定之前獲得時間。

0

如果您可以在事務中包裝所有內容,它會提升性能。查看延遲插入。