數據庫中的 Segment、Extent、Page、Row 詳解

在關系型數據庫的底層存儲架構中,數據并不是隨意寫入磁盤,而是按照一定的結構分層管理的。理解這些存儲單位對于優化數據庫性能、理解 SQL 執行過程以及排查性能問題都具有重要意義。

我將從宏觀到微觀,依次介紹數據庫存儲中的四個核心概念:

  • Segment(段)
  • Extent(區)
  • Page(頁)
  • Row(行)

1. Segment(段)

Segment 是數據庫中用于表示一個完整數據對象(如表、索引等)在磁盤上所占據的所有空間的邏輯集合。

特點:

  • 一個 segment 對應一個數據庫對象,比如某個表或某個索引。
  • 由多個 extent 組成。
  • 會隨著數據的增加自動擴展(例如 MySQL InnoDB 會自動分配更多 extent)。
  • 通常一個 segment 屬于一個表空間(tablespace)。

舉例:

  • 創建一個新表 user,數據庫系統就會為它分配一個 segment。
  • 插入數據后,該 segment 會動態增長,向系統請求更多的 extent。

2. Extent(區)

Extent 是一組連續的頁(Page),是數據庫分配磁盤空間的基本單位。

特點:

  • 一般是固定大小(比如 InnoDB 默認是 1MB)。
  • 多個 extent 組成一個 segment。
  • 避免了頻繁地按頁分配所帶來的碎片問題。

舉例(不同數據庫的實現可能略有不同):

  • MySQL InnoDB:一個 extent 通常由 64 個 16KB 的頁組成,即一個 extent 大小為 1MB。
  • SQL Server:一個 extent 是 8 個 8KB 頁,即 64KB。

3. Page(頁)

Page(頁) 是數據庫中 最小的I/O單位,數據的讀取和寫入都是以頁為單位進行的。

特點:

  • 每頁固定大小(常見為 8KB、16KB)。
  • 一個 extent 中包含若干頁。
  • 頁中除了數據之外,還包含頭部(元數據)、行目錄等信息。

4. Row(行)

Row(行) 是我們最熟悉的數據單位,即表中的一條記錄,最終被存儲在頁(Page)中。

特點:

  • 一頁中通常可以存儲多行數據。
  • 行的格式有固定長度和可變長度兩種。
  • 若某一行太大,不能完全放入一個頁中,系統會使用溢出頁或外部存儲機制(如 PostgreSQL 的 TOAST、MySQL 的 BLOB)。

優化建議:

  • 行長度影響頁能裝多少行,從而影響索引性能和緩存命中率。
  • 盡量避免一行中包含超大字段,建議單獨設計表進行拆分。

總結:四者關系圖

層級說明示例大小(InnoDB)
Segment表或索引的所有空間總和N/A
Extent一組連續的頁1MB(64個16KB頁)
Page數據讀寫的最小單位16KB
Row表中的一條記錄變長(數十~數千字節)

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

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

相關文章

DAMA車輪圖

DAMA車輪圖是國際數據管理協會(DAMA International)提出的數據管理知識體系(DMBOK)的圖形化表示,它以車輪(同心圓)的形式展示了數據管理的核心領域及其相互關系。以下是基于用戶提供的關鍵詞對D…

《QDebug 2025年4月》

一、Qt Widgets 問題交流 1. 二、Qt Quick 問題交流 1.QML單例動態創建的對象,訪問外部id提示undefined 先定義一個窗口組件,打印外部的id: // MyWindow.qml import QtQuick 2.15 import QtQuick.Window 2.15Window {id: controlwidth: …

JS | 正則 · 常用正則表達式速查表

以下是前端開發中常用的正則表達式速查表,包含驗證規則、用途說明與示例: 📌 常用正則表達式速查表 名稱正則表達式描述 / 用途示例手機號/^1[3-9]\d{9}$/中國大陸手機號13812345678 ?座機號/^0\d{2,3}-?\d{7,8}$/固定電話010-12345678 ?…

系統思考:個人與團隊成長

四年前,我交付的系統思考項目,今天學員的反饋依然深深觸動了我。 我常常感嘆,系統思考不僅僅是一場培訓,更像是一場持續的“修煉”。在這條修煉之路上,最珍貴的,便是有志同道合的伙伴們一路同行&#xff0…

寫屏障和讀屏障的區別是什么?

寫屏障(Write Barrier)與讀屏障(Read Barrier)的區別 在計算機科學中,寫屏障和讀屏障是兩種關鍵的內存同步機制,主要用于解決并發編程中的可見性、有序性問題,或在垃圾回收(GC&…

ssh -T git@github.com 測試失敗解決方案:修改hosts文件

問題描述 通過SSH方式測試,使用該方法測試連接可能會遇到連接超時、端口占用的情況,原因是因為DNS配置及其解析的問題 ssh -T gitgithub.com我們可以詳細看看建立 ssh 連接的過程中發生了什么,可以使用 ssh -v命令,-v表示 verbo…

大疆無人機搭載樹莓派進行目標旋轉檢測

環境部署 首先是環境創建,創建虛擬環境,名字叫 pengxiang python -m venv pengxiang隨后激活環境 source pengxiang/bin/activate接下來便是依賴包安裝過程了: pip install onnxruntime #推理框架 pip install fastapi uvicorn[standard] #網絡請求…

00 Ansible簡介和安裝

1. Ansible概述與基本概念 1.1. 什么是Ansible? Ansible 是一款用 Python 編寫的開源 IT 自動化工具,主要用于配置管理、軟件部署及高級工作流編排。它能夠簡化應用程序部署、系統更新等操作,并且支持自動化管理大規模的計算機系統。Ansibl…

Linxu實驗五——NFS服務器

一.NFS服務器介紹 NFS服務器(Network File System)是一種基于網絡的分布式文件系統協議,允許不同操作系統的主機通過網絡共享文件和目錄3。其核心作用在于實現跨平臺的資源透明訪問,例如在Linux和Unix系統之間共享靜態數據&#…

『 測試 』測試基礎

文章目錄 1. 調試與測試的區別2. 開發過程中的需求3. 開發模型3.1 軟件的生命周期3.2 瀑布模型3.2.1 瀑布模型的特點/缺點 3.3 螺旋模型3.3.1 螺旋模型的特點/缺點 3.4 增量模型與迭代模型3.5 敏捷模型3.5.1 Scrum模型3.5.2 敏捷模型中的測試 4 測試模型4.1 V模型4.2 W模型(雙V…

紅外遙控鍵

紅外 本章節旨在讓用戶自定義紅外遙控功能,需要有板載紅外接收的板卡。 12.1. 獲取紅外遙控鍵值 由于不同遙控器廠家定義的按鍵鍵值不一樣,所以配置不通用,需要獲取實際按鍵對應的鍵值。 1 2 3 4 5 6 #設置輸出等級 echo 7 4 1 7> /pr…

同一個虛擬環境中conda和pip安裝的文件存儲位置解析

文章目錄 存儲位置的基本區別conda安裝的包pip安裝的包 看似相同實則不同的機制實際路徑示例這種差異帶來的問題如何檢查包安裝來源最佳實踐建議 總結 存儲位置的基本區別 conda安裝的包 存儲在Anaconda(或Miniconda)目錄下的pkgs和envs子目錄中: ~/anaconda3/en…

機器學習極簡入門:從基礎概念到行業應用

有監督學習(supervised learning) 讓模型學習的數據包含正確答案(標簽)的方法,最終模型可以對無標簽的數據進行正確處理和預測,可以分為分類與回歸兩大類 分類問題主要是為了“盡可能分開整個數據而畫線”…

split和join的區別?

split和join是Python中用于處理字符串的兩種方法,它們的主要區別在于功能和使用場景。? split()方法 ?split()方法用于將字符串按照指定的分隔符分割成多個子串,并返回這些子串組成的列表?。如果不指定分隔符,則默認分割所有的空白字符&am…

MySQL從入門到精通(二):Windows和Mac版本MySQL安裝教程

目錄 MySQL安裝流程 (一)、進入MySQL官網 (二)、點擊下載(Download) (三)、Windows和Mac版本下載 下載Windows版本 下載Mac版本 (四)、驗證并啟動MySQL …

LeetCode 解題思路 45(分割等和子集、最長有效括號)

解題思路: dp 數組的含義: 在數組中是否存在一個子集,其和為 i。遞推公式: dp[i] | dp[i - num]。dp 數組初始化: dp[0] true。遍歷順序: 從大到小去遍歷,從 i target 開始,直到 …

電影感戶外啞光人像自拍攝影Lr調色預設,手機濾鏡PS+Lightroom預設下載!

調色詳情 電影感戶外啞光人像自拍攝影 Lr 調色,是借助 Lightroom 軟件,針對戶外環境下拍攝的人像自拍進行后期處理。旨在模擬電影畫面的氛圍與質感,通過調色賦予照片獨特的藝術氣息。強調打造啞光效果,使畫面色彩不過于濃烈刺眼&a…

使用 NV?Ingest、Unstructured 和 Elasticsearch 處理非結構化數據

作者:來自 Elastic Ajay Krishnan Gopalan 了解如何使用 NV-Ingest、Unstructured Platform 和 Elasticsearch 為 RAG 應用構建可擴展的非結構化文檔數據管道。 Elasticsearch 原生集成了行業領先的生成式 AI 工具和提供商。查看我們的網絡研討會,了解如…

Android 13 使能user版本進recovery

在 debug 版本上,可以在關機狀態下,同時按 電源鍵 和 音量加鍵 進 recovery 。 user 版本上不行。 參考 使用 build 變體 debug 版本和 user 版本的差別之一就是 ro.debuggable 屬性不同。 順著這個思路追蹤,找到 bootable/recovery/reco…

每日算法刷題計劃

這是我每天堅持刷算法題的倉庫,每天刷1-3道,時間30-40min,加油! 目前考慮leetcode洛谷形式,c和python3語言,leetcode主要學核心思想,洛谷學會輸入輸出格式 每日打卡:markdowncsdn打卡 刷題策略: 按分類刷…