MySQL表儲存引擎
常用的4種儲存引擎:
MyISAM、InnoDB、MEMORY和MERGE。
MyISAM
MyISAM是MySQL的預設儲存引擎。MyISAM不支援事務、也不支援外來鍵,其優勢是訪問的速度快,對事務完整性沒有要求或者以SELECT、INSERT為主的應用基本上都可以使用這個引擎來建立表。
InnoDB
InnoDB儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比MyISAM的儲存引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁碟空間以保留資料和索引。
Mysql key的作用,建立索引
KEY tid (tid) # 是單列索引(鍵)。
例如對上面建立的兩個表,子表的外來鍵指定是ON DELETE RESTRICT ON UPDATE CASCADE方式的,那麼在主表刪除記錄的時候,如果子表有對應記錄,則不允許刪除,主表在更新記錄的時候,如果子表有對應記錄,則子表對應更新:
InnoDB儲存引擎的表使用過程中不同於其他儲存引擎的特點
(1)自動增長列
(2)外來鍵約束
(3)儲存方式
如何選擇合適的儲存引擎
在選擇儲存引擎時,應根據應用特點選擇合適的儲存引擎,對於複雜的應用系統可以根據實際情況選擇多種儲存引擎進行組合。
下面是常用儲存引擎的適用環境。
MyISAM:預設的MySQL外掛式儲存引擎。
如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不是很高,
那麼選擇這個儲存引擎是非常適合的。MyISAM是在Web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。
InnoDB:用於事務處理應用程式,支援外來鍵。如果應用對事務的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢以外,還包括很多的更新、刪除操作,那麼InnoDB儲存引擎應該是比較合適的選擇。InnoDB
儲存引擎除了有效地降低由於刪除和更新導致的鎖定,還可以確保事務的完整ᨀ交(Commit)和回滾(Rollback),對於類似計費系統或者財務系統等對資料準確性要求比較高的系統,InnoDB都是合適的選擇。
MEMORY:將所有資料儲存在RAM中,在需要快速定位記錄和其他類似資料的環境下,可ᨀ供極快的訪問。MEMORY的缺陷是對錶的大小有限制,太大的表無法CACHE在記憶體中,其次是要確保表的資料可以恢復,資料庫異常終止後表中的資料是可以恢復的。MEMORY表通常用於更新不太頻繁的小表,用以快速得到訪問結果。
MERGE:用於將一系列等同的MyISAM表以邏輯方式組合在一起,並作為一個物件引用它們。MERGE表的優點在於可以突破對單個MyISAM表大小的限制,並且通過將不同的表分佈在多個磁碟上,可以有效地改善MERGE表的訪問效率。這對於諸如資料倉儲等VLDB環境十分適合。