這篇文章主要介紹了MySQL如何選擇合適的擇合存儲引擎,幫助大家更好的存ヾ(′ω`)?儲理解和使用MySQL數據庫,(′▽?zhuān)?感興趣的引擎朋友可以了解下
對于數據庫這一塊詢(xún)問(wèn)比較多的就是在 MySQL 中怎么去選擇一種何時(shí)當前業(yè)務(wù)需求的存儲引擎,而 MySQL 中支持的擇合存儲引擎又有很多種,那么 MySQL 中分別又有那些,存儲怎么優(yōu)雅的引擎使用呢?
劃分引擎原因
在??文件系統中,MySQL 將每個(gè)數據庫(也可以稱(chēng)之為 schemヽ(′ー`)ノa )保存為數據目錄下的擇合一個(gè)子目錄。創(chuàng )建表時(shí),存儲MySQL 會(huì )在數據庫子目錄下創(chuàng )建一個(gè)和表同名的引擎 .frm 文(wen)件保存表的定義。例如創(chuàng )建一個(gè)名為 DebugTable 的擇合表,MySQヽ(′ー`)ノL 會(huì )在 DebugTable.frm 文件中保存該表的存儲定義。
因為 MySQL 使用文件系(°ロ°) !統的引擎目錄和文件來(lái)??保存數據庫和表的定義,大小寫(xiě)敏??感性和具體的擇合平臺密切相關(guān)。在 Windows 系統中,存儲大小寫(xiě)是引擎不敏感的;而在類(lèi) Unix 系統中則是敏感的。不同的存儲引擎??保存數據和索引的方式是不同的,但表的定義則是在 MySQL 服務(wù)層wk統一處理的。
查看支持引擎
想了解 MySQL 中支持的引擎的???情況,可以使用如下命令查看:
show engines;
結果如下(MySQL版本:Ver 8.0.19):
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------(???)------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+-----??----+------------------------??----??-----------------------------??-------+--------------+------+--(??ヮ?)?*:???----------+
| FEDERATED | NO | Federated MySQL storagヽ(′ー`)ノe engine | NULL | NULL | NULL |
| MEMORY?? | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAUL??T(//ω//) | Supports transactions, ro??w-level locking, and foreig(′?`*)n keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance(′?_?`) Schema | NO | NO?? | NO |
| MyISAM | YES | MyISAM storage engine | NOヽ(′▽?zhuān)?/ | NO | NO |
| MRG_MYISAM | YES | Collection of identicaヽ(′▽?zhuān)?ノl MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+----(′?_?`)--------ヽ(′▽?zhuān)?ノ--------+---------+-----------------??-----------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
存儲引擎分類(lèi)
MySQL 存儲引擎分類(lèi)(lei)有 MyISAM、InnoDB、Memory、Merge等,可以看上面表中列出的支持引擎,但是其中最為常用的就是 MyISAM 和 InnoDB 兩個(gè)引擎,其中針對于以上講到的存儲引擎,如下表進(jìn)行對比:
MyISAM 與 InnoDB 區別
InnoDB 可借由事務(wù)日志( Trans??action Log )來(lái)恢復程??序崩潰( crash ),或非預期結束所造成的數據錯誤;而 MyISAM 遇到錯誤,必須完整掃描后才能重建索引,或修正未寫(xiě)入硬盤(pán)的錯誤。
InnoDB 的修復時(shí)間,一般都是固定的,但 MyISAM 的修復時(shí)間,則與數據量的多寡成正比。
相對而言,隨著(zhù)數據量的增加,InnoDB? 會(huì )有較佳的穩定性(xing)。
應用場(chǎng)景
MyISAM 管理非事務(wù)表。它提供高速存?儲和檢索,以及全文搜索能力。如果應用中需要執行大量的 SELECT 查詢(xún),那么 MyISAM 是更好的選擇。
Inno??DB 用于事務(wù)處理(╬?益?)應用程序,具有眾多特性,包括 ACID 事務(wù)支持。如果應用中需要執行大量的 INSERT 或 UPDATE 操作,則應該使用 InnoDB,這樣可以提高多用戶(hù)并發(fā)操作的性能。
以上就是MySQL 存儲引擎的選擇的詳細內容,更多關(guān)于MySQL 存儲引擎的資料請關(guān)注腳本之家其它相關(guān)文章!
來(lái)源:腳本之家
鏈接:https://www.jb51.net/article/19(′▽?zhuān)?5??413.htm