MySQL數據 在 磁盤上是什么樣子的

MySQL數據 在 磁盤上是什么樣子的,取決于所使用的存儲引擎。存儲于引擎 是作用在 表! 上的

存儲引擎

百度百科是這樣定義存儲引擎的:MySQL 中的數據用各種不同的技術存儲在文件(或者內存)中,這些不同的技術以及配套的相關功能在 MySQL 中被稱作 存儲引擎。

簡單來說就是不同的存儲引擎,我們的數據存儲的格式也會不一樣。

我們知道 現在 MySQL 中常用的存儲引擎有兩種:MyISAMInnoDB

  • MySQL 5.5之前,MyISAM 是 默認的 存儲引擎
  • MySQL 5.5開始,InnoDB 是 默認的 存儲引擎

區別


MyISAMInnoDB
事務不支持?支持
表/行鎖只有表鎖還引入了行鎖
外鍵不支持?支持?
全文索引支持?版本5.6 開始支持
讀寫速度更快更慢

從上面可以看出,MyISAM 最致命的一點就是不支持事務,而 InnoDB 支持。所以現在 InnoDB 已經成為我們使用的標配、最主流的存儲引擎了。

命令工具

查詢當前數據庫支持的存儲引擎

show engines;

查詢當前默認的存儲引擎

show variables like '%storage_engine%';

查詢表的相關信息

show table status like '表名';

MyISAM

每個 MyISAM 表 都有 3個文件存儲在磁盤上。這些文件的 名稱 以 表名 開頭,以 擴展名 指示文件類型。

  • .frm 文件(frame)存儲表結構

  • .MYD 文件(MY Data)存儲表數據

  • .MYI 文件(MY Index)存儲表索引

MySQL 里的數據 默認是 存放在安裝目錄下的 data 文件夾中,也可以自己修改。
在這里插入圖片描述

下面 以 MyISAM 作為存儲引擎 創建一張表 t_user_myisam。
在這里插入圖片描述

.MYI 文件 組織索引的方式就是 B+tree葉子節點 的 value 處存放的就是索引所在行的 磁盤文件地址

查找過程

首先會判斷查找條件 where 中的字段 是否是 索引字段,
如果是就會先拿著這字段去 .MYI 文件里通過 B+tree 快速定位,從根節點開始定位查找;
找到后 再把這個索引關鍵字(就是我們的條件)存放的 磁盤文件地址拿到 .MYD 文件里面找,從而定位到索引所在行的記錄。

請添加圖片描述

InnoDB

每個 MyISAM 表 都有 2個文件存儲在磁盤上。這些文件的 名稱 以 表名 開頭,以 擴展名 指示文件類型。

  • .frm 文件(frame)存儲表結構
  • .ibd 文件(InnoDB Data)存儲表 索引+數據

下面我創建了以 InnoDB 作為存儲引擎的一張表 t_user_innodb。
在這里插入圖片描述
InnoDB 把 索引 和 數據 都放在了 同一個文件 里存著了。
毋庸置疑,InnoDB 表里面的數據也是用 B+tree 數據結構 組織起來的。 下面我們來看看它具體是怎么存儲的。
在這里插入圖片描述
.ibd 存儲數據的特點就是 B+tree 的葉子節點上包括了: 索引 和 該索引所在 行 的 所有列數據 。

查找過程

首先會判斷查找條件 where 中的字段是否是索引字段,
如果是就會先拿著這字段去 .ibd 文件里通過 B+tree 快速定位,從根節點開始定位查找;
找到后直接把這個 索引關鍵字 及其記錄所在行的 所有列數據 返回。
請添加圖片描述

相關拓展

聚集(聚簇)索引

聚集索引:葉子節點包含了 完整的 數據記錄。

簡單來說就是 索引 和它所在行的 其它列數據 全部都在一起了。很顯然,MyISAM 沒有聚集索引,InnoDB 有。

InnoDB 的 主鍵索引 就是天然的 聚集索引。

有 聚集索引 當然就有 非聚集索引(稀疏索引)。對于 MyISAM 來說,它的索引就是非聚集索引。因為它的索引和數據是分開兩個文件存的:一個 .MYI 存索引,一個 .MYD 存數據。

為什么 DBA 都建議表中一定要有主鍵,而且推薦使用整型自增?

為什么要有主鍵?

因為 InnoDB 表里面的數據必須要有一個 B+tree 的索引結構來組織、維護我們的整張表的所有數據,從而形成 .idb 文件。

那和主鍵有什么關系?

如果 InnoDB 創建了一張沒有主鍵的表,那這張表就有可能沒有任何索引,則 MySQL會選擇所有具有唯一性并且不為 null 中的第一個字段的創建聚集索引。

如果沒有唯一性索引的字段就會有一個隱式字段成為表的聚集索引:而這個隱式字段,就是 InnoDB 幫我們創建的一個長度為 6字節 的整數列 ROW_ID,它隨著新行的插入單調增加,InnoDB 就以該列對數據進行聚集。

使用這個 ROW_ID 列的表都共享一個相同的全局序列計數器(這是數據字典的一部分)。為了避免這個 ROW_ID 用完,所以建議表中一定要單獨建立一個主鍵字段。

為什么推薦使用整型自增?

首先整型的占用空間會比字符串小,而且在查找上比大小也會比字符串更快。字符串比大小的時候還要先轉換成 ASCII 碼再去比較。

如果使用自增的話,在插入方面的效率也會提高。

不使用自增,可能時不時會往 B+tree 的中間某一位置插入元素,當這個節點位置放滿了的時候,節點就要進行分裂操作(效率低)再去維護,有可能樹還要進行平衡,又是一個耗性能的操作。

都用自增就會永遠都往后面插入元素,這樣索引節點分裂的概率就會小很多。

二級索引

除聚集索引之外的所有索引都叫做二級索引,也稱輔助索引。
它的葉子節點 不會存儲 其它 所有列的數據,就只存儲 主鍵值。
優點:保持一致性和節省空間。

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

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

相關文章

MySQL的相關操作

目錄 一. 字符串函數 二. group by分組 2.1 作用 2.2 格式 2.3 舉例 三. order by排序 3.1 格式 3.2 舉例 四. limit 4.1 作用 4.2 舉例 五. having 5.1 作用 5.2 舉例 六. 正則表達式 七. 多表查詢 7.1 定義 7.2 子查詢 7.3 聯合查詢 縱向合并 7.4 交叉連…

網絡安全-等級保護(等保) 2-7-3 GB/T 25058—2019 第7章 安全設計與實施

############################################################################### 對于安全廠家而言,最關心的內容在本章節,根據已確定的安全總體方案,完成技術措施和管理措施的詳細設計和實施,包含具體的安全產品和管理要求。…

【Spring Boot】配置實戰指南:Properties與YML的深度對比與最佳實踐

目錄 1.前言 2.正文 2.1配置文件的格式 2.2properties 2.2.1基礎語法 2.2.2value讀取配置文件 2.2.3缺點 2.3yml 2.3.1基礎語法 2.3.2配置不同數據類型 2.3.3配置讀取 2.3.4配置對象和集合 2.3.5優缺點 2.4綜合練習:驗證碼案例 2.4.1分析需求 2.4.2…

20250519使用TF卡將NanoPi NEO core開發板刷機為Ubuntu core22.04.3系統完成之后執行poweroff自動關機

1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解壓縮/ubuntu20.04下使用tar 2、Win32DiskImager.exe 寫如32GB的TF卡。【以管理員身份運行】 3、TF卡如果已經做過會有3個磁盤分區,可以使用SD Card Formatter/SDCardFormatterv5_WinE…

編譯Qt5.15.16并啟用pdf模塊

編譯Qt5.15.16并啟用pdf模塊 標題1.目錄設置 -q-bulid –qt-everywhere-src-5.15.16 –bulid cd bulid 必須,否則會提示Project ERROR: You cannot configure qt separately within a top-level build. create .qmake.stash and .qmake.super in build folder …

“智”斗秸稈焚燒,考拉悠然以科技之力筑牢生態安全防線

清晨,薄霧籠罩著遼闊的田野,農民們開始了一天的勞作。然而,隨著收割季的到來,秸稈焚燒問題也逐漸浮現,成為威脅空氣質量與生態安全的隱患。傳統監管方式往往顯得力不從心,效率低下的困境亟待突破。在此背景…

Nockchain項目部署教程

Nockchain頭礦窗口正在打開,不拼設備,現在部署,馬上就要開挖了。 一、項目介紹 Nockchain 是結合了POW和ZKVM的區塊鏈協議。 主要特點: 1)計算存儲新域名空間三位一體架構,高吞吐量 2)使用No…

2025年氣候持續大風,消納減少,如何保收益?東潤能源整體解決方案持續保收益保增長

引言 隨著全球氣候變化加劇,2025年極端天氣頻發,風資源豐富但電網消納能力不足的問題日益突出,導致許多風電項目面臨限電、收益下滑的挑戰。如何在復雜的氣候和電力市場環境下保障投資收益,成為行業關注的焦點。東潤能源憑借領先的技術創新和綜合能源解決方案,為風電行業…

2023河南CCPC省賽vp部分補題

A 模擬 暴力 對每個合法的前綴&#xff0c;判斷后綴是不是合法 int a[29]; void solve(){string s;cin>>s;int t-1;if(s.size()1){return cout<<"NaN"<<endl,void();}for(int i0;i<27;i) a[i]0;for(int i0;i<s.size();i){a[s[i]-a];if(…

【2025保姆級】Open-WebUI五大功能區首曝!第一篇:管理員面板深度拆解,手把手講解配置AI管理中樞

【2025保姆級】Open-WebUI五大功能區首曝&#xff01;第一篇&#xff1a;管理員面板深度拆解&#xff0c;手把手講解&配置AI管理中樞 一、引言二、用戶2.1 概述2.2 權限組 三、競技場評估四、函數五、設置5.1 通用5.1.1 身份驗證5.1.2 功能 5.2 外部連接5.2.1 OpenAI API5.…

docker上傳鏡像

向Docker Hub上傳鏡像&#xff0c;需要按照一定的步驟進行操作。 Docker Hub是Docker的官方鏡像倉庫&#xff0c;用戶可以在其中存儲、管理和部署Docker鏡像。要向Docker Hub上傳鏡像&#xff0c;請遵循以下步驟&#xff1a; 創建Docker Hub賬戶&#xff1a; 訪問Docker Hub官…

(十三)深入了解AVFoundation-采集:視頻幀采集與實時濾鏡處理

引言 在移動應用中&#xff0c;實時視頻處理已成為視頻拍攝、短視頻、直播、美顏相機等功能的核心技術之一。從簡單的濾鏡疊加&#xff0c;到復雜的美顏、AR 特效&#xff0c;背后都離不開對每一幀圖像的高效采集與處理。在前幾篇文章中&#xff0c;我們已經實現了基本的視頻采…

數字政務安全實戰:等保2.0框架下OA系統防護全解析

近期在Python基礎教學領域深入鉆研函數機制、數據結構優化等內容時&#xff0c;深刻意識到信息安全作為技術基石的戰略價值。在政務數字化轉型浪潮中&#xff0c;Python憑借其高擴展性與豐富的安全生態庫&#xff0c;成為構建政務OA系統安全防護體系的核心工具。本文將以等保2.…

Pytorch項目實戰-2:花卉分類

一、前言 在深度學習項目中&#xff0c;數據集的處理和模型的訓練、測試、預測是關鍵環節。本文將為小白詳細介紹從數據集搜集、清洗、劃分到模型訓練、測試、預測以及模型結構查看的全流程&#xff0c;附帶代碼和操作說明&#xff0c;讓你輕松上手&#xff01; 二、數據集 …

React Flow 邊事件處理實戰:鼠標事件、鍵盤操作及連接規則設置(附完整代碼)

本文為《React Agent&#xff1a;從零開始構建 AI 智能體》專欄系列文章。 專欄地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。項目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代碼示?例與實戰源&#xff09;。完整介紹…

java小結(一)

java&#xff08;上&#xff09; 模塊一 1.JDK,JRE,JVM 知識點 核心內容 易混淆點 JDK定義 Java Development Kit&#xff08;Java開發工具包&#xff09;&#xff0c;包含開發所需全部工具 JDK包含JRE的關系容易混淆 JRE定義 Java Runtime Environment&#xff08;Jav…

ddns-go安裝介紹-強大的ipv6動態域名解析神器-家庭云計算專家

ddns-go 是一款輕量級開源動態域名解析工具&#xff0c;專注于解決動態IP環境下的域名綁定問題&#xff0c;尤其適配IPv6網絡環境。其核心功能包括&#xff1a; 1.IPv6動態解析&#xff1a;自動檢測本地IPv6地址變化&#xff08;支持網卡、接口或命令獲取&#xff09;&#xf…

Docker-mongodb

拉取 MongoDB 鏡像: docker pull mongo 創建容器并設置用戶&#xff1a; 要掛載本地數據目錄&#xff0c;請替換此路徑: /Users/Allen/Env/AllenDocker/mongodb/data/db docker run -d --name local-mongodb \-e MONGO_INITDB_ROOT_USERNAMEadmin \-e MONGO_INITDB_ROOT_PA…

WooCommerce緩存教程 – 如何防止緩存破壞你的WooCommerce網站?

我們在以前的文章中探討過如何加快你的WordPress網站的速度&#xff0c;并研究過各種形式的緩存。 然而&#xff0c;像那些使用WooCommerce的動態電子商務網站&#xff0c;在讓緩存正常工作方面往往會面臨重大挑戰。 在本指南中&#xff0c;我們將告訴你如何為WooCommerce設置…

貪心算法 Part04

總結下重疊區間問題 LC 452. 用最少數量的箭引爆氣球 和 LC 435. 無重疊區間 本質上是一樣的。 LC 452. 用最少數量的箭引爆氣球 是求n個區間當中 &#xff0c; 區間的種類數量 k。此處可以理解為&#xff0c;重疊在一起的區間屬于同一品種&#xff0c;沒有重疊的區間當然…