介紹
存儲引擎就是存儲數據,建立索引,更新/查詢數據等技術的實現方式。存儲引擎是基于表的,而不是基于庫的,所以存儲引擎也可以稱為表類型(即一個數據庫下的表可以選擇不同的存儲引擎)。
1. 如何查看一個表的存儲引擎?
SHOW CREATE TABLE + '表名' ,可以查看建表語句,這里面會攜帶存儲引擎信息。
MySQL從5.5版本后的默認存儲引擎是InnoDB(在不特殊指定引擎類型時)。
2. 如何查看當前數據庫所支持的存儲引擎?
SHOW ENGINES
每一個存儲引擎的支持內容均可以在上述查看到。
存儲引擎的特點
InnoDB
介紹 : InnoDB是一款兼顧高可靠性和高性能的通用存儲引擎,在MySQL 5.5之后,InnoDB是默認的MySQL存儲引擎。
?
特點:
DML操作遵循ACID模型,支持事務;
行級鎖,提高并發訪問性能;
支持外鍵 FOREIGN KEY約束,保證數據的完整性和正確性;
邏輯存儲結構:
其中在InnoDB引擎中頁是磁盤操作的最小單元,一個區的大小是固定的(1M),一個頁的大小也是固定的(16K)。即一個區中可以包含64個頁
MyISAM
介紹:MyISAM是MySQL早期的默認存儲引擎。
特點:
不支持事務,不支持外鍵;
支持表鎖,不支持行鎖;
訪問速度快;
Memory
介紹 : Memory存儲引擎的表數據是存儲在內存中的,由于受到硬件問題,或斷電問題的影響,只能將這些表作為臨時表或者緩存使用。
特點:
內存存放;
hash索引(默認)
特點總結:
存儲引擎如何選擇
在選擇存儲引擎時,應該根據應用系統的特點選擇合適的存儲引擎。對于復雜的應用系統,還可以根據實際情況選擇多種存儲引擎進行組合。
InnoDB:是Mysql的默認存儲引擎,支持事務、外鍵。如果應用對事務的完整性有比較高的要求,在并發條件下要求數據的一致性,數據操作除操作和查詢外,還包含很多更新,刪除的操作,那么InnoDB存儲引擎是比較合適的。
MyISAM:如果應用是以讀操作和插入操作為主,只有很少的更新和刪陳操作,開且對事務的完整性、并發性要求不是很高,加么選擇這個存儲引擎是非常合適的。(比如日志相關的數據,電商中的足跡,評論相關的數據)。
MEMORY:將所有數據保存在內存中,訪問速度快,通常用于臨時表及緩存。MEMORY的缺陷就是對表的大小有限制,太大的表無法緩存在內存中,而且無法保障數據的安全性。