濮阳杆衣贸易有限公司

主頁 > 知識庫 > MySQL 選擇合適的存儲引擎

MySQL 選擇合適的存儲引擎

熱門標簽:宜賓全自動外呼系統(tǒng)廠家 臨沂做地圖標注 廣東400企業(yè)電話申請流程 申請400電話電話價格 石家莊400電話辦理公司 許昌外呼增值業(yè)務(wù)線路 新鄉(xiāng)智能外呼系統(tǒng)好處 咸陽防封電銷卡 地圖標注客戶付款

對于數(shù)據(jù)庫這一塊詢問比較多的就是在 MySQL 中怎么去選擇一種何時當前業(yè)務(wù)需求的存儲引擎,而 MySQL 中支持的存儲引擎又有很多種,那么 MySQL 中分別又有那些,怎么優(yōu)雅的使用呢?

劃分引擎原因

在文件系統(tǒng)中,MySQL 將每個數(shù)據(jù)庫(也可以稱之為 schema )保存為數(shù)據(jù)目錄下的一個子目錄。創(chuàng)建表時,MySQL 會在數(shù)據(jù)庫子目錄下創(chuàng)建一個和表同名的 .frm 文件保存表的定義。例如創(chuàng)建一個名為 DebugTable 的表,MySQL 會在 DebugTable.frm 文件中保存該表的定義。

因為 MySQL 使用文件系統(tǒng)的目錄和文件來保存數(shù)據(jù)庫和表的定義,大小寫敏感性和具體的平臺密切相關(guān)。在 Windows 系統(tǒng)中,大小寫是不敏感的;而在類 Unix 系統(tǒng)中則是敏感的。不同的存儲引擎保存數(shù)據(jù)和索引的方式是不同的,但表的定義則是在 MySQL 服務(wù)層wk統(tǒng)一處理的。

查看支持引擎

想了解 MySQL 中支持的引擎的情況,可以使用如下命令查看:

show engines;

結(jié)果如下(MySQL版本:Ver 8.0.19):

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 兩個引擎,其中針對于以上講到的存儲引擎,如下表進行對比:

MyISAM 與 InnoDB 區(qū)別

兩種類型最主要的差別是InnoDB支持事務(wù)處理與外鍵和行級鎖。

  1. InnoDB 可借由事務(wù)日志( Transaction Log )來恢復(fù)程序崩潰( crash ),或非預(yù)期結(jié)束所造成的數(shù)據(jù)錯誤;而 MyISAM 遇到錯誤,必須完整掃描后才能重建索引,或修正未寫入硬盤的錯誤。
  2. InnoDB 的修復(fù)時間,一般都是固定的,但 MyISAM 的修復(fù)時間,則與數(shù)據(jù)量的多寡成正比。
  3. 相對而言,隨著數(shù)據(jù)量的增加,InnoDB 會有較佳的穩(wěn)定性。
  4. MyISAM 必須依靠操作系統(tǒng)來管理讀取與寫入的緩存,而 InnoDB 則是有自己的讀寫緩存管理機制。( InnoDB 不會將被修改的數(shù)據(jù)頁立即交給操作系統(tǒng))因此在某些情況下,InnoDB 的數(shù)據(jù)訪問會比 MyISAM 更有效率。
  5. InnoDB 目前并不支持 MyISAM 所提供的壓縮與 terse row formats(簡潔的行格式) ,所以對硬盤與高速緩存的使用量較大。
  6. 當操作完全兼容 ACID(事務(wù))時,雖然 InnoDB 會自動合并數(shù)筆連接,但每次有事務(wù)產(chǎn)生時,仍至少須寫入硬盤一次,因此對于某些硬盤或磁盤陣列,會造成每秒 200 次的事務(wù)處理上限。若希望達到更高的性能且保持事務(wù)的完整性,就必使用磁盤緩存與電池備援。當然 InnoDB 也提供數(shù)種對性能沖擊較低的模式,但相對的也會降低事務(wù)的完整性。而MyISAM則無此問題,但這并非因為它比較先進,這只是因為它不支持事務(wù)。

應(yīng)用場景

  • MyISAM 管理非事務(wù)表。它提供高速存儲和檢索,以及全文搜索能力。如果應(yīng)用中需要執(zhí)行大量的 SELECT 查詢,那么 MyISAM 是更好的選擇。
  • InnoDB 用于事務(wù)處理應(yīng)用程序,具有眾多特性,包括 ACID 事務(wù)支持。如果應(yīng)用中需要執(zhí)行大量的 INSERT 或 UPDATE 操作,則應(yīng)該使用 InnoDB,這樣可以提高多用戶并發(fā)操作的性能。

以上就是MySQL 存儲引擎的選擇的詳細內(nèi)容,更多關(guān)于MySQL 存儲引擎的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • SQL Server中的執(zhí)行引擎入門 圖解
  • MySQL 常見存儲引擎的優(yōu)劣
  • 修改MySQL數(shù)據(jù)庫引擎為InnoDB的操作
  • 關(guān)于MySQL Memory存儲引擎的相關(guān)知識
  • 詳解mysql中的存儲引擎
  • 聊聊MySQL中的存儲引擎
  • MySQL創(chuàng)建數(shù)據(jù)表時設(shè)定引擎MyISAM/InnoDB操作
  • 簡述MySQL InnoDB存儲引擎
  • 如何自己動手寫SQL執(zhí)行引擎

標簽:阜新 鎮(zhèn)江 合肥 貴州 臺灣 日照 北京 鷹潭

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MySQL 選擇合適的存儲引擎》,本文關(guān)鍵詞  MySQL,選擇,合適,的,存儲,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 選擇合適的存儲引擎》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL 選擇合適的存儲引擎的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    谷城县| 宝丰县| 溧阳市| 南阳市| 自治县| 汝南县| 上林县| 浠水县| 闵行区| 岐山县| 巴林右旗| 潼关县| 巩义市| 芮城县| 垦利县| 萨嘎县| 鹰潭市| 连城县| 南溪县| 卢湾区| 长泰县| 青阳县| 高青县| 汝南县| 文登市| 利津县| 静乐县| 游戏| 南木林县| 河池市| 乐安县| 鄂伦春自治旗| 无锡市| 西畴县| 五寨县| 眉山市| 吉安市| 通海县| 神木县| 望奎县| 麻城市|