當(dāng)前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

MySQL選擇合適的存儲引擎

 2020-11-16 11:26  來源: 腳本之家   我來投稿 撤稿糾錯

  域名預(yù)訂/競價,好“米”不錯過

這篇文章主要介紹了MySQL如何選擇合適的存儲引擎,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下

對于數(shù)據(jù)庫這一塊詢問比較多的就是在 MySQL 中怎么去選擇一種何時當(dāng)前業(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ù)處理與外鍵和行級鎖。

InnoDB 可借由事務(wù)日志( Transaction Log )來恢復(fù)程序崩潰( crash ),或非預(yù)期結(jié)束所造成的數(shù)據(jù)錯誤;而 MyISAM 遇到錯誤,必須完整掃描后才能重建索引,或修正未寫入硬盤的錯誤。

InnoDB 的修復(fù)時間,一般都是固定的,但 MyISAM 的修復(fù)時間,則與數(shù)據(jù)量的多寡成正比。

相對而言,隨著數(shù)據(jù)量的增加,InnoDB 會有較佳的穩(wěn)定性。

MyISAM 必須依靠操作系統(tǒng)來管理讀取與寫入的緩存,而 InnoDB 則是有自己的讀寫緩存管理機制。( InnoDB 不會將被修改的數(shù)據(jù)頁立即交給操作系統(tǒng))因此在某些情況下,InnoDB 的數(shù)據(jù)訪問會比 MyISAM 更有效率。

InnoDB 目前并不支持 MyISAM 所提供的壓縮與 terse row formats(簡潔的行格式) ,所以對硬盤與高速緩存的使用量較大。

當(dāng)操作完全兼容 ACID(事務(wù))時,雖然 InnoDB 會自動合并數(shù)筆連接,但每次有事務(wù)產(chǎn)生時,仍至少須寫入硬盤一次,因此對于某些硬盤或磁盤陣列,會造成每秒 200 次的事務(wù)處理上限。若希望達(dá)到更高的性能且保持事務(wù)的完整性,就必使用磁盤緩存與電池備援。當(dāng)然 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 存儲引擎的選擇的詳細(xì)內(nèi)容,更多關(guān)于MySQL 存儲引擎的資料請關(guān)注腳本之家其它相關(guān)文章!

來源:腳本之家

鏈接:https://www.jb51.net/article/195413.htm

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關(guān)標(biāo)簽
mysql

相關(guān)文章

  • MySQL5.7 集群配置的步驟

    這篇文章主要介紹了MySQL5.7集群配置的步驟,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下

    標(biāo)簽:
    mysql
  • MySQL中觸發(fā)器和游標(biāo)的介紹與使用

    這篇文章主要給大家介紹了關(guān)于MySQL中觸發(fā)器和游標(biāo)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

    標(biāo)簽:
    mysql
  • MySQL中exists、in及any的基本用法

    這篇文章主要給大家介紹了關(guān)于MySQL中exists、in及any的基本用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

    標(biāo)簽:
    mysql
  • MySQL正確修改最大連接數(shù)的3種方案

    這篇文章主要給大家介紹了關(guān)于MySQL正確修改最大連接數(shù)的3種方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

    標(biāo)簽:
    mysql
  • 教你怎么在Windows系統(tǒng)上手動搭建MySql數(shù)據(jù)庫

    1.已經(jīng)購買好的騰訊云輕量應(yīng)用服務(wù)器。2.作者本次演示使用的系統(tǒng)是WindowsServer2019,其他windows版本也可以,操作流程大同小異。3.使用Windows遠(yuǎn)程桌面連接騰訊云輕量服務(wù)器。

熱門排行

信息推薦