2011-04-08 83 views
2

我們的系統工程師利用一切機會提醒大家他有多恨MySQL,他喜歡postgres並且我們需要切換。他的抱怨有時似乎是合理的,但最近他們已經包括了荒謬。他現在聲稱的其中一件事是「InnoDB沒有真正做交易,它只有假裝」。是的,這是一個直接的報價。事實上,他聲稱innodb中所有與交易相關的命令實際上都是NOP。下面是他只是說,大約五分鐘前的東西意譯:「InnoDB並不真正支持交易」 - 什麼?

「我發現了最近,因爲我把一切都在一個事務我就做了回退,並且它不會讓我後。一些挖掘我發現,innodb中的所有事務命令實際上是NOP。「

這聽起來荒誕給我。這意味着沒有人使用innodb成功地回滾了一個事務,或者甚至執行過一次。這將意味着innodb的開發者完全撒謊,並認爲我們都很愚蠢,不願意爲他們的假貨而墮落。

是否有任何可能的方式,絲毫,有一定道理的,以他的要求?或者,也許,有一種扭曲的方式來解釋這種方式聽起來不那麼瘋狂?

編輯澄清:我不是想咆哮。我在問,因爲我找不到他的主張的證據,他是否完全錯誤,或者是否有一些我應該知道的事實。

+0

我建議減少你的問題到一個實際的問題,因爲咆哮經常被標記。 – 2011-04-08 20:34:46

+1

問題是在最後一段,這個問題沒什麼問題恕我直言 – SQLMenace 2011-04-08 20:35:49

+0

請參閱:[Transactions - 一個InnoDB教程](http://mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html) – 2011-04-08 20:37:05

回答

4

不,這是錯誤的。我敢打賭,他的InnoDB提交刷新設置錯誤,因此交易無法回滾。

的基本答案是:InnoDB的整個觀點是交易和行級鎖定,但交易是InnoDB的不可分割的一部分。

此外,他可以做一些愚蠢的事就像在不關閉自動提交,因此在他的「交易」每個SQL語句被提交,從而變成自己的事務。

+0

*但MySQL性能仍然更好IMO *與聲明InnoDB不做交易一樣荒謬。有PostgreSQL速度更快的工作負載,以及MySQL更快的工作負載 – 2011-04-08 20:49:20

+0

不能等待SQL Server,Oracle和NoSQL更好的評論:-) – SQLMenace 2011-04-08 20:53:21

5

可以證明這個錯誤:有一些虛擬的數據創建一個InnoDB表,然後

BEGIN TRANSACTION 

然後做一些愚蠢像

DELETE FROM TABLE 

(注意沒有where子句),然後做一個

ROLLBACK 

當表中的數據再次神祕的時候,InnoDB有transacti ons和你的同事只是 - 誤導。

注意,他可能只是混淆的InnoDB與MyISAM數據。