最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

最新評(píng)論

府谷县| 儋州市| 红安县| 浦县| 峨边| 孟津县| 千阳县| 武清区| 罗源县| 祥云县| 陕西省| 迭部县| 石嘴山市| 比如县| 东城区| 永济市| 闽清县| 花莲市| 营口市| 乾安县| 永济市| 茶陵县| 灵宝市| 文成县| 新巴尔虎右旗| 麻栗坡县| 肇东市| 台北市| 丹棱县| 洛宁县| 佛坪县| 文登市| 迁西县| 中江县| 上虞市| 礼泉县| 彰化县| 浏阳市| 北宁市| 平阳县| 句容市|