主頁 > 知識(shí)庫 > MySQL 選擇合適的存儲(chǔ)引擎

MySQL 選擇合適的存儲(chǔ)引擎

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

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

劃分引擎原因

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

因?yàn)?MySQL 使用文件系統(tǒng)的目錄和文件來保存數(shù)據(jù)庫和表的定義,大小寫敏感性和具體的平臺(tái)密切相關(guān)。在 Windows 系統(tǒng)中,大小寫是不敏感的;而在類 Unix 系統(tǒng)中則是敏感的。不同的存儲(chǔ)引擎保存數(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)

存儲(chǔ)引擎分類

MySQL 存儲(chǔ)引擎分類有 MyISAM、InnoDB、Memory、Merge等,可以看上面表中列出的支持引擎,但是其中最為常用的就是 MyISAM 和 InnoDB 兩個(gè)引擎,其中針對(duì)于以上講到的存儲(chǔ)引擎,如下表進(jìn)行對(duì)比:

MyISAM 與 InnoDB 區(qū)別

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

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

應(yīng)用場景

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 選擇合適的存儲(chǔ)引擎》,本文關(guān)鍵詞  MySQL,選擇,合適,的,存儲(chǔ),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 選擇合適的存儲(chǔ)引擎》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL 選擇合適的存儲(chǔ)引擎的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章