MySQL進階:(第一篇) 深入解析MySQL存儲引擎架構

一、MySQL的體系結構

連接層:

最上層是一些客戶端和鏈接服務,主要完成一些類似于連接處理、授權認證、及相關的安全方案。服務器也會為安全接入的每個客戶端驗證它所具有的操作權限。

服務層:

第二層架構主要完成大多數的核心服務功能,如SQL接口,并完成緩存的查詢,SQL的分析和優化,部分內置函數的執行。所有跨存儲引擎的功能也在這一層實現,如過程、函數等。?

引擎層:

存儲引擎真正的負責了MySQL中數據的存儲和提取,服務器通過API和存儲引擎進行通信。不同的存儲引擎具有不同的功能,這樣我們可以根據自己的需要,來選取合適的存儲引擎。?

存儲層:

主要是將數據存儲在文件系統之上,并完成與存儲引擎的交互。?

?二、存儲引擎簡介

存儲引擎就是存儲數據、建立索引、更新/查詢數據等技術的實現方式。存儲引擎是基于表的,而不是基于庫的,所以存儲引擎也可被稱為表類型。?

2.1在創建表時,指定存儲引擎?

?2.2查看當前數據庫支持的存儲引擎

?三、存儲引擎特點

? 3.1 InnoDB?

????????InnoDB是一種兼顧高可靠性和高性能的通用存儲引擎,在MySQL5.5之后,InnoDB是默認的MySQL存儲引擎。?

特點:

  • DML操作遵循ACID模型,支持事務;
  • 行級鎖,提高并發訪問性能;
  • 支持外鍵FOREIGNKEY約束,保證數據的完整性和正確性;

文件:

xxx.ibd:xxx代表的是表名,innoDB引擎的每張表都會對應這樣一個表空間文件,存儲該表的表結構(frm、sdi)、數據和索引。

參數: innodb_file_per_table

表空間 (Tablespace)

????????這是 InnoDB 邏輯結構的最高層,是存儲所有數據和索引的最高級別容器。

段 (Segment)

????????表空間由一個或多個段組成。段是管理特定類型數據的邏輯存儲單元。

區 (Extent)

????????區是物理上連續的 64 個頁(Page)組成的邏輯單元。因此,一個區的大小是?64 * 16KB = 1MB

頁 (Page / Block)

????????頁是 InnoDB 磁盤和內存交互的最小單位。默認大小為?16KB(可通過?innodb_page_size?配置,但初始化后不可更改)。

行 (Row)

????????行是存儲引擎中最小的邏輯存儲單元,代表表中的一條記錄。

3.2 MyISAM

????????MyISAM是MySQL早期的默認存儲引擎。

特點:
不支持事務,不支持外鍵
支持表鎖,不支持行鎖
訪問速度快

?文件:
XXX.sdi:存儲表結構信息
XXX.MYD:存儲數據
XXX.MYI:存儲索引

3.3 Memory

????????Memory引擎的表數據時存儲在內存中的,由于受到硬件問題、或斷電問題的影響,只能將這些表作為臨時表或緩存使用。?

特點:
內存存放
hash索引(默認)

文件:
XXX.sdi:存儲表結構信息

?3.4三種存儲引擎對比

?四、存儲引擎的選擇

????????在選擇存儲引擎時,應該根據應用系統的特點選擇合適的存儲引擎。對于復雜的應用系統,還可以根據實際情況選擇多種存儲引擎進行組合。


InnoDB:

是Mysql的默認存儲引擎,支持事務、外鍵。如果應用對事務的完整性有比較高的要求,在并發條件下要求數據的一致性,數據操作除了插入和查詢之外,還包含很多的更新、刪除操作,那么InnoDB存儲引擎是比較合適的選擇。


MyISAM:

如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,并且對事務的完整性、并發性要求不是很高,那么選擇這個存儲引擎是非常合適的。


MEMORY:

將所有數據保存在內存中,訪問速度快,通常用于臨時表及緩存。MEMORY的缺陷就是對表的大小有限制,太大的表無法緩存在內存中,而且無法保障數據的安全性。

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

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

相關文章

京東m端 滑塊 分析 t30

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關!部分python代碼response requests.pos…

CentOS使用命令行工具為其配置靜態網絡并使用VMware軟件ovf配置文件快速配置多臺不同ip的centos文件

目錄 一、實驗前準備 1.SSH遠程登錄工具 二、CentOS配置靜態IP并實現遠程ssh登錄 1.VMware軟件查看NAT模式下默認網段和網關 2.使用ipconfig查看當前網卡名字和動態分配的ip地址 3.使用VIM編輯網絡配置文件(此步驟可有其他編輯器替代,例如&#xf…

設計模式學習[17]---組合模式

文章目錄前言1.引例2.一致性抽象處理3.透明組合模式與安全組合模式總結前言 在畫類圖的時候,類與類之間有組合關系,聚合關系,我本來以為這個組合模式應該是整體與部分的關系,其實設計模式中的組合模式和類圖中的組合不是同一個東…

48Days-Day12 | 添加字符,數組變換,裝箱問題

添加字符 添加字符_牛客筆試題_牛客網 算法原理 因為本題數據量都比較小,所以我們可以直接使用暴力解法,枚舉B字符串的每一個位置作為與A字符串比較的起點,維護一個最小位數的值 代碼 import java.util.*;// 注意類名必須為 Main, 不要有…

關于npm前端項目編譯時棧溢出 Maximum call stack size exceeded的處理方案

背景:使用vueelementui的前端項目,使用jenkins進行自動化編譯部署,某天在進行編譯發版的時候,突然出現 npm ERR! Maximum call stack size exceeded 錯誤,一直都沒法編譯成功。原因:隨著前端項目的不斷迭代…

微信小程序組件發布為 npm 包的具體步驟

1. 準備工作 首先,您需要在系統上安裝 Node.js 和 npm。如果尚未安裝,請訪問 Node.js — Run JavaScript Everywhere 下載并安裝最新版本。 2. 創建獨立的組件目錄 為了更好地管理組件,建議將其從當前項目中獨立出來: wechat-…

LCM中間件入門(2):LCM核心實現原理解析

文章目錄一、good()函數:LCM實例狀態檢查的實現原理1. 實現邏輯2. 簡化代碼示例(C語言核心邏輯)二、publish():向指定channel發送消息的原理1. 完整流程拆解2. 簡化代碼示例(C核心邏輯)三、subscribe()&…

Nginx安裝及配置

一.nginx安裝1.1nginx概述1.1.1 nginx介紹Nginx是一款高性能的開源HTTP和反向代理服務器,是免費的、開源的、高性能的HTTP和反向代理服務器、郵件代理服務器、以及TCP/UDP代理服務器解決C10K問題(10K Connections)。同時也支持IMAP/POP3代理服…

SelectDB數據庫,新一代實時數據倉庫的全面解析與應用

摘要:SelectDB是一款基于Apache Doris的新一代實時數據倉庫解決方案,具備實時極速、融合統一、彈性架構和開放生態四大核心特性。它采用云原生存算分離架構,支持秒級數據更新、毫秒級查詢響應,在TPC-H等基準測試中性能超越傳統系統…

自動駕駛的未來:多模態傳感器鉆機

倫敦大學學院博士生袁方正在建造多模態傳感器鉆機,以探索自動駕駛的未來。他的最新設置匯集了一套尖端傳感器: 📡 60 GHz 雷達(用于 Raspberry Pi 的 DreamHAT)DreamRF 📷 RGB 深度攝像頭 (Real…

13.Redis 的級聯復制

Redis 的級聯復制 即實現基于Slave節點的Slave 1. 修改 Slave 節點配置文件 # 第一個slave節點 [rootubuntu2204 ~]#vim /apps/redis/etc/redis.conf(大約在533行附近) replicaof 10.0.0.100 6379 masterauth 123456# 第二個slave節點 [rootubuntu2204 ~]#vim /apps/redis/etc/…

spring-ai-alibaba 學習(二十)——graph之檢查點

前面學習了graph的基本概念,參數設置,特殊節點和邊,今天學習一下檢查點檢查點可能名稱比較抽象,換個名字可能比較容易理解,進度保存點或者存檔點,可以類比游戲中保存當前游戲進度的存檔進度主要用于人工介入…

sqli-labs:Less-19關卡詳細解析

1. 思路🚀 本關的SQL語句為: $insert"INSERT INTO security.referers (referer, ip_address) VALUES ($uagent, $IP)";注入類型:字符串型(單引號包裹)、INSERT操作提示:參數需以閉合關鍵參數&a…

Java小紅書源碼1:1還原uniapp_仿小紅書源碼

在內容驅動型社交平臺興起的背景下,小紅書作為圖文/視頻種草社區的代表,其產品結構與功能體驗逐漸成為眾多開發者與創業團隊的模仿藍本。本項目基于Java后端uni-app前端棧,完整復刻小紅書主要功能,支持多端(小程序、H5…

USB Type-C PD協議一文通

原文:https://www.richtek.com/Design%20Support/Technical%20Document/AN056?sc_langzh-TW譯者:TrustZone1、概述 USB Type-C標準的出現是為了滿足不斷增長的現代設備之間的連接需要,它在傳統USB標準的基礎上提供了更高的電源傳輸能力和資料…

AI文檔比對和Word的“比較”功能有什么區別?

AI文檔比對工具的核心區別在于,它超越了Word的純文本“找不同”,能精準處理掃描件、表格及印章,并將文檔審查從被動的文本核對,處理大文檔也更為快速及準確。 為什么Word的“比較”功能已經不夠用了? 對于許多專業人士…

AI驅動SEO關鍵詞智能進化

內容概要 隨著人工智能(AI)技術的快速演進,搜索引擎優化(SEO)領域正迎來前所未有的變革。本文核心探討AI如何驅動SEO關鍵詞的智能進化,重點解析人工智能革新關鍵詞研究與優化策略的機制,包括智能…

基于SpringBoot+MyBatis+MySQL+VUE實現的青年公寓服務平臺管理系統(附源碼+數據庫+畢業論文+部署教程+配套軟件)

摘 要 傳統信息的管理大部分依賴于管理人員的手工登記與管理,然而,隨著近些年信息技術的迅猛發展,讓許多比較老套的信息管理模式進行了更新迭代,房屋信息因為其管理內容繁雜,管理數量繁多導致手工進行處理不能滿足廣…

12.Redis 主從復制

Redis 主從復制Redis 主從復制1. Redis 主從復制架構2. 主從復制實現2.1 主從命令配置2.1.1 啟用主從同步2.1.2 查看日志觀察同步狀態2.1.3 修改 Slave 節點配置文件2.1.4 刪除主從同步3. 主從復制故障恢復3.1 Slave 節點故障和恢復3.2 Master 節點故障和恢復3.3 常見主從復制故…

微服務的編程測評系統8-題庫管理-競賽管理

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄前言1. 添加題目1.1 service方法1.2 畫頁面-引入富文本和代碼編輯框1.3 子組件中發送請求2. 獲取題目詳情3. 編輯題目4. 刪除題目5. Vue生命周期函數5.1 創建階段5.2…