欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年09月11日 10:08:00   作者:debug客棧  
這篇文章主要介紹了MySQL如何選擇合適的存儲(chǔ)引擎,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下

對(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(簡(jiǎn)潔的行格式) ,所以對(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)用場(chǎ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)文章!

相關(guān)文章

  • mYsql日期和時(shí)間函數(shù)不求人

    mYsql日期和時(shí)間函數(shù)不求人

    mYsql日期和時(shí)間函數(shù)不求人...
    2007-04-04
  • mysql數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù)只保留一條方法實(shí)例

    mysql數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù)只保留一條方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù),只保留一條的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL修改數(shù)據(jù)的超詳細(xì)教程

    MySQL修改數(shù)據(jù)的超詳細(xì)教程

    在MySQL中可以使用?UPDATE?語句來修改、更新一個(gè)或多個(gè)表的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL修改數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • MySQL定時(shí)任務(wù)(EVENT事件)如何配置詳解

    MySQL定時(shí)任務(wù)(EVENT事件)如何配置詳解

    這篇文章主要介紹了MySQL定時(shí)任務(wù)(EVENT事件)如何配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MySQL update set 和 and的區(qū)別

    MySQL update set 和 and的區(qū)別

    這篇文章主要介紹了MySQL update set 和 and的區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • 連接MySQL時(shí)出現(xiàn)1449與1045異常解決辦法

    連接MySQL時(shí)出現(xiàn)1449與1045異常解決辦法

    這篇文章主要介紹了連接MySQL時(shí)出現(xiàn)1449與1045異常解決辦法的相關(guān)資料,通過IP鏈接MySQL的時(shí)候會(huì)出現(xiàn)1499與1054錯(cuò)誤異常的情況,這里提供解決辦法,需要的朋友可以參考下
    2017-09-09
  • Mac下MySQL5.7忘記root密碼的解決方法

    Mac下MySQL5.7忘記root密碼的解決方法

    這篇文章主要為大家詳細(xì)介紹了Mac下MySQL5.7忘記root密碼的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • mysql視圖之管理視圖實(shí)例詳解【增刪改查操作】

    mysql視圖之管理視圖實(shí)例詳解【增刪改查操作】

    這篇文章主要介紹了mysql視圖之管理視圖,結(jié)合實(shí)例形式詳細(xì)分析了mysql視圖增刪改查操作具體實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • MySQL 索引和數(shù)據(jù)表該如何維護(hù)

    MySQL 索引和數(shù)據(jù)表該如何維護(hù)

    使用合適的數(shù)據(jù)類型完成數(shù)據(jù)表創(chuàng)建和建立索引后,工作并沒有完結(jié)——你需要去維護(hù)數(shù)據(jù)表和索引以保證它們運(yùn)行良好。數(shù)據(jù)表維護(hù)的主要目的是查找和修復(fù)沖突,維護(hù)精確的索引統(tǒng)計(jì)和減少碎片。
    2021-05-05
  • MySQL 8.0.34安裝教程圖文詳解

    MySQL 8.0.34安裝教程圖文詳解

    這篇文章主要介紹了MySQL 8.0.34安裝教程,本文通過圖文結(jié)合的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09

最新評(píng)論