【MySQL精通之路】存儲引擎-MySQL8.0中的差異

存儲引擎是MySQL組件,用于處理不同表類型的SQL操作。

InnoDB是默認的、最通用的存儲引擎,Oracle默認使用其創建表。(MySQL 8.0中的CREATE TABLE語句默認創建InnoDB表。)

MySQL Server使用可插拔存儲引擎體系結構,使存儲引擎能夠加載到正在運行的MySQL服務器中或從中卸載。

要確定服務器支持哪些存儲引擎,請使用SHOW engines語句。

Support列中的值指示是否可以使用引擎。值YES、NO或DEFAULT表示某個引擎可用、不可用或可用,并且當前設置為默認存儲引擎。

mysql> SHOW ENGINES\G
*************************** 1. row ***************************Engine: PERFORMANCE_SCHEMASupport: YESComment: Performance Schema
Transactions: NOXA: NOSavepoints: NO
*************************** 2. row ***************************Engine: InnoDBSupport: DEFAULTComment: Supports transactions, row-level locking, and foreign keys
Transactions: YESXA: YESSavepoints: YES
*************************** 3. row ***************************Engine: MRG_MYISAMSupport: YESComment: Collection of identical MyISAM tables
Transactions: NOXA: NOSavepoints: NO
*************************** 4. row ***************************Engine: BLACKHOLESupport: YESComment: /dev/null storage engine (anything you write to it disappears)
Transactions: NOXA: NOSavepoints: NO
*************************** 5. row ***************************Engine: MyISAMSupport: YESComment: MyISAM storage engine
Transactions: NOXA: NOSavepoints: NO
...

本章介紹專用MySQL存儲引擎的用例。

它不包括“InnoDB存儲引擎”和“MySQL NDB Cluster 8.0”中涵蓋的默認InnoDB存儲引擎或NDB存儲存儲引擎。

對于高級用戶,它還包含可插拔存儲引擎架構的描述

(請參閱“MySQL存儲引擎架構概述”)。

有關商業MySQL Server二進制文件中提供的功能的信息,請參閱MySQL網站上的MySQL 版本。可用的存儲引擎可能取決于您使用的MySQL版本。

有關MySQL存儲引擎常見問題的答案,請參閱“MySQL 8.0常見問題解答:存儲引擎”。

1.MySQL 8.0支持的存儲引擎

1.1 InnoDB

????????MySQL 8.0中的默認存儲引擎。InnoDB是MySQL的事務安全(ACID兼容)存儲引擎,具有提交、回滾和崩潰恢復功能,可保護用戶數據。InnoDB行級鎖定(不升級到更粗粒度的鎖定)和Oracle風格的一致非鎖定讀取提高了多用戶并發性和性能。InnoDB將用戶數據存儲在集群索引中,以減少基于主鍵的常見查詢的I/O。為了保持數據完整性,InnoDB還支持FOREIGN KEY引用完整性約束。

有關InnoDB的更多信息,請參閱"InnoDB存儲引擎"。

1.2 MyISAM

????????這些表占用空間很小。表級鎖定限制了讀/寫工作負載的性能,因此它通常用于Web和數據倉庫配置中的只讀或只讀工作負載。

1.3 Memory

????????將所有數據存儲在RAM中,以便在需要快速查找非關鍵數據的環境中快速訪問。這種發動機以前被稱為HEAP發動機。其使用案例正在減少;InnoDB及其緩沖池內存區域提供了一種通用且持久的方式來將大部分或所有數據保存在內存中,NDBCLUSTER為巨大的分布式數據集提供了快速的鍵值查找。

1.4 CSV

????????它的表實際上是具有逗號分隔值的文本文件。CSV表允許您以CSV格式導入或轉儲數據,以便與讀取和寫入相同格式的腳本和應用程序交換數據。因為CSV表沒有索引,所以通常在正常操作期間將數據保存在InnoDB表中,并且僅在導入或導出階段使用CSV表。

1.5 Archive

????????這些緊湊、無索引的表用于存儲和檢索大量很少被引用的歷史、歸檔或安全審計信息。

1.6 Blackhole

????????黑洞存儲引擎接受但不存儲數據,類似于Unix/dev/null設備。查詢總是返回一個空集。這些表可以用于復制配置,其中DML語句被發送到副本服務器,但源服務器不保留自己的數據副本。

1.7 NDB

????????(也稱為NDBCLUSTER)這種集群數據庫引擎特別適合于需要盡可能高的正常運行時間和可用性的應用程序。

1.8 Merge

????????使MySQL DBA或開發人員能夠對一系列相同的MyISAM表進行邏輯分組,并將它們作為一個對象引用。適用于VLDB環境,如數據倉庫。

1.9 Federated

????????提供鏈接獨立MySQL服務器的能力,以從多個物理服務器創建一個邏輯數據庫。非常適合分布式或數據集市環境。

1.10 Example

????????此引擎是MySQL源代碼中的一個示例,說明了如何開始編寫新的存儲引擎。它主要是開發者感興趣的。存儲引擎是一個什么都不做的“存根”。您可以使用此引擎創建表,但不能將任何數據存儲在表中或從表中檢索數據。

2.選擇存儲引擎

????????MySQL提供的各種存儲引擎在設計時考慮到了不同的用例。下表概述了MySQL提供的一些存儲引擎,并在下表中進行了說明。

FeatureMyISAMMemoryInnoDBArchiveNDB
B-tree索引YesYesYesNoNo
備份/時間點恢復(note 1)YesYesYesYesYes
集群支持NoNoNoNoYes
聚集索引NoNoYesNoNo
壓縮數據Yes (note 2)NoYesYesNo
數據緩存NoN/AYesNoYes
加密數據Yes (note 3)Yes (note 3)Yes (note 4)Yes (note 3)Yes (note 5)
外鍵支持NoNoYesNoYes
全文搜索索引YesNoYes (note 6)NoNo
地理空間數據類型支持YesNoYesYesYes
地理空間索引支持YesNoYes (note 7)NoNo
哈希索引NoYesNo (note 8)NoYes
索引緩存YesN/AYesNoYes
鎖定粒度TableTableRowRowRow
MVCCNoNoYesNoNo
復制支持(note 1)YesLimited (note 9)YesYesYes
存儲限制256TBRAM64TBNone384EB
T樹索引NoNoNoNoYes
事務NoNoYesNoYes
更新數據字典的統計信息YesYesYesYesYes

note:

1.在服務器中實現,而不是在存儲引擎中實現。

2.只有在使用壓縮行格式時,才支持壓縮的MyISAM表。使用MyISAM壓縮行格式的表是只讀的

3.通過加密功能在服務器中實現。

4.通過加密功能在服務器中實現;在MySQL 5.7及更高版本中,支持靜態數據加密

5.通過加密功能在服務器中實現;截至NDB 8.0.22支持加密NDB備份;NDB 8.0.29及更高版本支持透明NDB文件系統加密。

6.MySQL 5.6及更高版本提供了對FULLTEXT索引的支持。

7.MySQL 5.7及更高版本提供了對地理空間索引的支持。

8.InnoDB的自適應哈希索引功能在內部使用哈希索引

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14643.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux命令日常使用思考

linux命令日常使用思考 復制的相關問題scp和cp的區別root192.168.5.229-r的理解 更新版本的相關問題svn info 根目錄和家目錄的區別根目錄家目錄 復制的相關問題 scp和cp的區別 安全性:SCP 是基于 SSH 的加密傳輸協議,可以保證數據在傳輸過程中的安全性…

vue期末復習選擇題1

1. 下面哪一項描述是錯誤的?(B) A.$("ul li:gt(5):not(:last)")選取ul標記里面索引值大于5且不是最后一個的li元素B.$("div").find("span")選取div元素的子元素spanC.$("div.showmore > a")選取…

Axure RP 9 for Mac/win:重新定義交互原型設計的未來

在當今數字化時代,交互原型設計已成為產品開發中不可或缺的一環。Axure RP 9作為一款功能強大的交互原型設計軟件,憑借其出色的性能和用戶友好的界面,贏得了廣大設計師的青睞。 Axure RP 9不僅支持Mac和Windows兩大主流操作系統,…

Excel實現將A列和B列的內容組合到一個新的列(例如C列)中,其中A列的每個值都與B列的所有值組合。

利用Excel中vba代碼宏實現 原始數據: 自動生成后數據: vba實現代碼: Sub CombineColumns()Dim ws As WorksheetDim lastRowA As Long, lastRowB As Long, i As Long, j As LongDim MyIndex As IntegerDim strCombine As String, strColA As…

主流容器工具對比以及重點推薦學習的企業級工具

常見的主流容器工具包括但不限于以下幾種: 1. Docker: Docker 是最流行的容器平臺之一,它允許開發者將應用及其依賴打包到一個輕量級、可移植的容器中,然后可以在任何支持Docker的系統上運行。 2. Kubernetes:Kubern…

【Python】 去除字符串中的所有空白字符

基本原理 在Python中,字符串(String)是不可變的數據類型,這意味著一旦創建了一個字符串,就不能修改它的內容。然而,我們可以創建一個新的字符串,它包含原始字符串中的字符,但不包含…

局域網傳文件怎么操作?輕松實現文件共享!

在現代的辦公和生活中,局域網傳文件已經成為一種非常常見和方便的方式,可以快速、安全地在局域網內進行文件傳輸。無需依賴互聯網,局域網傳文件可以幫助團隊成員之間共享文件、備份數據、進行協作等。本文將介紹三種常見的方法,幫…

MySQL——存儲過程,觸發器

BaiduComate: # 問題1: # 問題1: 幫我創建兩個表student與score表,要求student表有id,createDate,userName,phone,age,sex,introduce, 要求score表有id&…

Vue3實戰Easy云盤(四):使用空間+文件預覽+文件分享+文件下載

一、空間使用 Framework.vue中 (1)引入接口 const api {getUseSpace: "/getUseSpace",logout: "/logout", }; (2)回調 // 使用空間 const useSpaceInfo ref({ useSpace: 0, totalSpace: 1 }); const g…

達夢數據庫和Oracle對比

達夢數據庫和Oracle對比 達夢數據庫(DM)是中國自主研發的一款數據庫管理系統,在功能和應用上與 Oracle 數據庫有諸多類似,但也有其獨特的特點。以下是對達夢數據庫(DM)和 Oracle 數據庫的詳細對比&#xf…

unreal engine 5.0.3 創建游戲項目

根據虛幻官網介紹,虛幻引擎5可免費用于創建線性內容、定制項目和內部項目。你可以免費用它開發游戲,只有當你的產品營收超過100萬美元時,才收取5%的分成費用。所以目前國內也有許多游戲廠商在使用UE制作游戲。UE5源碼也已開源,有U…

[數據集][目標檢測]吸煙檢測數據集VOC+YOLO格式1449張1類別

數據集格式:Pascal VOC格式YOLO格式(不包含分割路徑的txt文件,僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數):1449 標注數量(xml文件個數):1449 標注數量(txt文件個數):1449 標注…

huggingface筆記:LLama 2

1 前提tip 1.1 使用什么數據類型訓練模型? Llama2模型是使用bfloat16訓練的 上傳到Hub的檢查點使用torch_dtype float16,這將通過AutoModel API將檢查點從torch.float32轉換為torch.float16。在線權重的數據類型通常無關緊要,這是因為模型…

QT 使用QZipWriter進行文件壓縮

目錄 1、QZipWriter 2、主要功能 3、示例 1、QZipWriter QZipWriter 是 Qt 提供的一個類,用于創建和管理 ZIP 文件。它屬于 Qt 的 QtGui 模塊,雖然在 Qt 6 中已經被移除,但在早期的 Qt 版本中,它被用作一種簡便的方式來創建 ZI…

CMMI模型的分析

CMMI模型的分析 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是由美國卡內基梅隆大學軟件工程研究所(SEI)開發的一個過程級改進訓練和評估程序。CMMI模型為組織提供了一套綜合的指南,用于改進其過程和提升性能。 CMMI 3.0是CMMI模型的最新版本,于…

AWS計算之AWS Elastic Beanstalk

AWS Elastic Beanstalk是一項用于簡化應用程序部署和管理的托管服務。它允許開發人員上傳他們的應用程序代碼,并自動處理底層的部署、擴展、負載均衡和監控任務,從而使開發人員能夠專注于應用程序的開發而不必擔心基礎架構的管理細節。 借助Elastic Bea…

機器學習300問】95、什么是KNN算法?它和K-means什么關系?

一、KNN算法的定義 KNN(K-Nearest Neighbors)算法,是一種簡單而有效的監督學習方法。它既可以用在分類任務,也可用在回歸任務中。KNN算法的核心思想:在特征空間中,如果有一個數據點周圍的大多數鄰居屬于某個…

5. JVM面試題匯總

Java全棧面試題匯總目錄-CSDN博客 1. 說一下JVM的主要組成部分及其作用? JVM包含兩個子系統和兩個組件,兩個子系統為Class loader(類裝載)、Execution engine(執行引擎);兩個組件為Runtime data area(運行時數據區)、Native Interface(本地接口)。 Cl…

linux mail命令及其歷史

一、【問題描述】 最近隔壁組有人把crontab刪了,crontab這個命令有點反人類,它的參數特別容易誤操作: crontab - 是刪除計劃表 crontab -e 是編輯,總之就是特別容易輸入錯誤。 好在可以通過mail命令找回,但是mai…

【計算機網絡】初識Tcp協議

💻文章目錄 📄前言Tcp基礎概念Tcp 的報文格式三次握手四次揮手 Tcp的滑動窗口機制概念超時重傳機制高速重傳 TCP傳輸控制機制流量控制擁堵控制慢啟動 Tcp的性能優化機制延遲應答捎帶應答 📓總結 📄前言 TCP三次握手、四次揮手&…