MySQL必知存儲引擎

来源:https://www.cnblogs.com/yyfh/archive/2020/01/08/12168798.html
-Advertisement-
Play Games

Mysql存儲引擎 1.MyISAM MySQL 5.0 之前的預設資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務. 2.InnoDB事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為預設資料庫引擎. 3.BDB源 自 Berkeley DB,事務型數 ...


Mysql存儲引擎

1.MyISAM MySQL 5.0 之前的預設資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務.

2.InnoDB事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為預設資料庫引擎.

3.BDB源 自 Berkeley DB,事務型資料庫的另一種選擇,支持Commit 和Rollback 等其他事務特性

4.Memory所有數據置於記憶體的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數據量成正比的記憶體空間。並且其內容會在 MySQL 重新啟動時丟失

5.Merge將一定數量的 MyISAM 表聯合而成一個整體,在超大規模數據存儲時很有用

6.Archive非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive 擁有高效的插入速度,但其對查詢的支持相對較差

7.Federated將不同的 MySQL 伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分散式應用

8.Cluster/NDB高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用

9.CSV 邏輯上由逗號分割數據的存儲引擎。它會在資料庫子目錄里為每個數據表創建一個 .csv 文件。這是一種普通文本文件,每個數據行占用一個文本行。CSV 存儲引擎不支持索引。

10.BlackHole 黑洞引擎,寫入的任何數據都會消失,一般用於記錄 binlog 做複製的中繼

11.EXAMPLE 存儲引擎是一個不做任何事情的存根引擎。它的目的是作為 MySQL 源代碼中的一個例子,用來演示如何開始編寫一個新存儲引擎。同樣,它的主要興趣是對開發者。EXAMPLE 存儲引擎不支持編索引。另外,MySQL 的存儲引擎介面定義良好。有興趣的開發者可以通過閱讀文檔編寫自己的存儲引擎。

InnoDB

InnoDB是MySQL預設的事務型存儲引擎,只有在需要他不支持的特性時,才考慮使用期它存儲引擎。

實現了四個標準的隔離級別,預設級別是可重覆讀(REPEATABLE READ).在可重覆讀隔離級別下,通過多版本併發控制(MVCC)+Next-Key Locking防止幻讀。

主索引是聚簇索引,在索引中保存了數據,從而避免直接讀取磁碟,因此對查詢性能有很大的提升。

內部做了很多優化,包括從磁碟讀取數據時採用的可預測性讀、能夠加快讀操作並且自動創建的自適應哈希索引、能夠加速插入操作的插入緩衝區等。

支持真正的線上熱備份。其它存儲引擎不支持線上熱備份,要獲取一致性視圖需要停止對所有表的寫入,而在讀寫混合場景中,停止寫入可能也意味著停止讀取。

MyISAM

設計簡單,數據以緊密格式存儲。對於只讀數據,或者表比較小、可以容忍修複操作,則依然可以使用它。

提供了大量的特性,包括壓縮表、空間數據索引等。

不支持事務。

不支持行級鎖,只能對整張表加鎖,讀取時會對需要讀到的所有表加共用鎖,寫入時則對錶加排它鎖。但在表有讀取操作的同時,也可以往表中插入新的記錄,這被稱為併發插入(CONCURRENT INSERT)。

可以手工或者自動執行檢查和修複操作,但是和事務恢復以及崩潰恢復不同,可能導致一些數據丟失,而且修複操作是非常慢的。

如果指定了 DELAY_KEY_WRITE 選項,在每次修改執行完成時,不會立即將修改的索引數據寫入磁碟,而是會寫到記憶體中的鍵緩衝區,只有在清理鍵緩衝區或者關閉表的時候才會將對應的索引塊寫入磁碟。這種方式可以極大的提升寫入性能,但是在資料庫或者主機崩潰時會造成索引損壞,需要執行修複操作。

比較

  • 事務:InnoDB 是事務型的,可以使用 Commit 和 Rollback 語句。
  • 併發:MyISAM 只支持表級鎖,而 InnoDB 還支持行級鎖。
  • 外鍵:InnoDB 支持外鍵。
  • 備份:InnoDB 支持線上熱備份。
  • 崩潰恢復:MyISAM 崩潰後發生損壞的概率比 InnoDB 高很多,而且恢復的速度也更慢。
  • 其它特性:MyISAM 支持壓縮表和空間數據索引。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、man find 解釋: find - search for files in a directory hierarchy,即:在目錄下查找文件 2、按文件被修改的時間查詢文件 命令格式: find 目錄 -mtime +n -name 文件名 在指定目錄及其子目錄下查找(負無窮,nowTime ...
  • 最近windows上需要配置全局代理 走 socks5,發現同類型的有 cow pcap 等解決方案,通過嘗試發現還是proxifier 比較好用! 下載:https://www.proxifier.com/download/legacy/ProxifierSetup331.exe 註冊: 激活ke ...
  • 安裝IIS7 1、打開伺服器管理器(開始-電腦-右鍵-管理-也可以打開),添加角色 直接下一步 勾選Web伺服器(IIS),下一步,有個註意事項繼續下一步(這裡我就不截圖了) 勾選ASP.NET會彈出以下視窗添加所需的角色服務,勾選CGI(這裡根據個人情況勾選,CGI是必選的,否則PHP不生效的) ...
  • 一、原理 1、Hypervisor是一種運行在物理伺服器和操作系統之間的中間軟體層,可允許多個操作系統和應用共用一套基礎物理硬體,它能直接訪問物理設備,會給每一臺虛擬機分配記憶體、CPU、網路、磁碟等資源,也可以確保虛擬機對應的硬體資源不被其他虛擬機訪問,是所有虛擬化技術的核心。 2、虛擬機 指通過軟 ...
  • 關於日誌切割 日誌文件包含了關於系統中發生的事件的有用信息,在排障過程中或者系統性能分析時經常被用到。對於忙碌的伺服器,日誌文件大小會增長極快,伺服器會很快消耗磁碟空間,這成了個問題。除此之外,處理一個單個的龐大日誌文件也常常是件十分棘手的事。logrotate是個十分有用的工具,它可以自動對日誌進 ...
  • test簡介 測試命令test用於形成一個表達式,結合條件判斷語句if-else來判斷。 例如可以判斷某個文件是否存在,是否具備什麼樣的特性(可讀嗎?可寫嗎?可執行嗎?塊文件嗎?)等等。 測試命令test有三種語法格式: test EXPRESSION [ EXPRESSION ] [[ EXPRE ...
  • Delete ms-resource:AppName/Text ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 是一種物理地址反向映射虛擬地址的方法。 映射 頁表用於虛擬地址到物理地址映射,其中的 頁表項記 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...