2009-10-13 63 views
1

我目前正在研究一個非常專業的PHP框架,它可能需要處理大型數據庫傳輸。Autocommit與單項交易(小項目與大項目)

例如: 佔整個用戶數的一半;這應該是框架的每一天的工作空間。因此,如果我的框架是大項目所需要的,是否推薦使用單個事務處理多個查詢(例如,在JOINs(?)中執行1個查詢中的許多事情),還是自動提交首選?

如果可能的話,張貼一些已經討論過這個問題的博客文章。

謝謝。 ;)

+4

您確定您瞭解交易是什麼嗎?因爲「用JOIN在1個查詢中做很多事情」並不是特別的事務性的。 – 2009-10-13 13:35:25

+0

編寫一個不針對特定項目的「PHP框架」聽起來像是一場災難。如果你沒有一個肯定會使用它的特定的資助項目,沒有人會這樣做。 – MarkR 2009-10-13 13:47:21

+0

我不想表達我的意思是一樣的,對不起。 「做很多[..]」!=「交易」 這應該包括一個獨立的問題,無論JOIN是否'有用',當我打算構建框架來執行許多查詢一天。 – 2009-10-13 14:01:10

回答

3

MyISAM是無事務的,所以自動提交不會影響它。

至於InnoDB,autocommit使重複查詢數百個的時間一樣慢。

最好的決定當然是做所有基於集合的操作,但是如果您必須在循環中執行查詢,請關閉自動提交。

另請注意,「多個查詢」和「在一個查詢中使用JOIN做許多事情」是完全不同的事情。

後者是一種原子操作,即使在MyISAM上也能立即成功或失敗。

自動提交不會影響其性能,因此:此查詢中的所有內容都始終在單個事務中完成。

在一個查詢中做很多事情實際上是做許多事情的首選方式。

1

聯接不僅僅是有用的,它們在任何情況下都是必需的,只是最簡單的數據結構。考慮在沒有它們的情況下編寫代碼顯示出對關係數據庫設計和訪問的基本缺乏理解。不使用連接通常會導致在選擇中得到錯誤的答案。您可能在插入,更新和刪除時沒有連接,但它們也經常在那裏使用和使用。

+0

+1,如果可以的話,非常感謝。 – 2009-10-13 20:08:47