友情提示:此篇文章大約須要閱讀 8分鐘53秒,不足之處請多指教,感謝你的閱讀。訂閱本站mysql
此文章首發於 Debug客棧 |https://www.debuginn.cnsql
對於數據庫這一塊詢問比較多的就是在 MySQL 中怎麼去選擇一種什麼時候當前業務需求的存儲引擎,而 MySQL 中支持的存儲引擎又有不少種,那麼 MySQL 中分別又有那些,怎麼優雅的使用呢?數據庫
在文件系統中,MySQL 將每一個數據庫(也能夠稱之爲 schema )保存爲數據目錄下的一個子目錄。建立表時,MySQL 會在數據庫子目錄下建立一個和表同名的 .frm 文件保存表的定義。例如建立一個名爲 DebugTable 的表,MySQL 會在 DebugTable.frm 文件中保存該表的定義。緩存
由於 MySQL 使用文件系統的目錄和文件來保存數據庫和表的定義,大小寫敏感性和具體的平臺密切相關。在 Windows 系統中,大小寫是不敏感的;而在類 Unix 系統中則是敏感的。不一樣的存儲引擎保存數據和索引的方式是不一樣的,但表的定義則是在 MySQL 服務層wk統一處理的。併發
想了解 MySQL 中支持的引擎的狀況,可使用以下命令查看:app
show engines;
結果以下(MySQL版本:Ver 8.0.19):ide
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec)
MySQL 存儲引擎分類有 MyISAM、InnoDB、Memory、Merge等,能夠看上面表中列出的支持引擎,可是其中最爲經常使用的就是 MyISAM 和 InnoDB 兩個引擎,其中針對於以上講到的存儲引擎,以下表進行對比:性能
兩種類型最主要的差異是InnoDB支持事務處理與外鍵和行級鎖。spa