日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

劃分引擎原因

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

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

查看支持引擎

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

show engines;

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

怎么優雅的選擇 MySQL 存儲引擎

 

MyISAM 與 InnoDB 區別

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

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

應用場景

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

參考文章

  • Mysql 存儲引擎的區別和比較 – zgrgfr – CSDN
  • Mysql的存儲引擎之:MERGE存儲引擎 – 翔之天空 – CSDN
  • MySQL存儲引擎之Merge引擎
  • MySQL存儲引擎 – MyISAM與InnoDB區別 – Rocky – 知乎
  • MySQL引擎介紹 – 慕課網 – 知乎
  • MyISAM和InnoDB區別和應用場景 – Ryo8

分享到:
標簽:引擎 MySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定