簡體   English   中英

為什么在Joomla 3.0.1安裝sql腳本中使用ENGINE = InnoDB?

[英]Why in Joomla 3.0.1 installation sql script ENGINE=InnoDB is used?

請有人在Joomla解釋原因! 3.0.1安裝用於MySQL的sql腳本是使用ENGINE = InnoDB !?! 有什么特別的原因!??!?

MySQL數據庫的兩種主要類型的表存儲引擎是InnoDB和MyISAM。 總結一下功能和性能的差異,

  1. InnoDB較新,而MyISAM較舊。

  2. InnoDB更復雜,而MyISAM更簡單。

  3. InnoDB在數據完整性方面更加嚴格,而MyISAM則是松散的。

  4. 當MyISAM實現表級鎖時,InnoDB實現了用於插入和更新的行級鎖。

  5. InnoDB有交易,而MyISAM沒有。

  6. InnoDB有外鍵和關系約束,而MyISAM沒有。

  7. InnoDB具有更好的崩潰恢復能力,而MyISAM在恢復系統崩潰時的數據完整性方面表現不佳。

  8. MyISAM有全文搜索索引,而InnoDB沒有。

    鑒於這些差異,InnoDB和MyISAM各有其優點和缺點。 它們在某些情況下比在另一種情況下更適合。

InnoDB的優點

InnoDB應該用於數據完整性優先的地方,因為它通過關系約束和事務的幫助固有地處理它們。

寫入密集型(插入,更新)表更快,因為它使用行級鎖定,只保留對正在插入或更新的同一行的更改。

InnoDB的缺點

由於InnoDB必須處理表之間的不同關系,因此數據庫管理員和方案創建者必須花費更多時間來設計比MyISAM更復雜的數據模型。

消耗更多的系統資源,如RAM。 事實上,許多人都建議,如果在安裝MySQL之后沒有實際需要,可以關閉InnoDB引擎。

沒有全文索引。

MyISAM的優點

設計和創建更簡單,因此對初學者更好。 不用擔心表之間的外來關系。

由於結構更簡單,整體上比InnoDB更快,因此服務器資源的成本更低。

全文索引。

特別適合讀取密集型(選擇)表。

MyISAM的缺點

沒有數據完整性(例如關系約束)檢查,這就是數據庫管理員和應用程序開發人員的責任和開銷。

不支持在關鍵數據應用程序(如銀行業務)中必不可少的事務。

對於經常插入或更新的表,InnoDB比InnoDB慢,因為整個表都被鎖定以進行任何插入或更新。

比較非常簡單。

InnoDB更適合需要頻繁插入和更新的數據關鍵情況。

另一方面,MyISAM在不完全依賴於數據完整性的應用程序中表現更好,而且大多只是選擇和顯示數據。

閱讀更多

考慮到他們沒有使用任何外鍵約束,這實際上是一個非常好的問題。

由於他們自己沒有使用外部約束,因此我想到了為什么他們可能會使用InnoDB而不是MyISAM的幾個原因:

  1. 他們有一些未來計划在某個時間點嚴格控制數據完整性。

  2. 他們希望允許為Joomla編寫擴展的人引用現有數據並制定硬約束,如果這是創建者所希望的。 IE:讓我們想象一個為Joomla系統中的用戶存儲筆記的組件。 然后,作者可以創建一個如下表格:

     CREATE TABLE IF NOT EXISTS `#__notes` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `note` VARCHAR(255) NOT NULL, `owner` INT(11) NOT NULL, PRIMARY KEY (`id`), INDEX (`owner`), CONSTRAINT FOREIGN KEY (`owner`) REFERENCES `#__users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

    然后作者可以確定筆記的所有者實際存在,並且如果用戶從系統中刪除,他將不會有任何垃圾剩余,因為屬於特定用戶的所有筆記也將被刪除關於刪除操作的CASCADE,如果您不想手動維護干凈的數據庫,這是非常方便的,如果您想要引用的數據庫使用不同的引擎,即MyISAM,這是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM