最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

【入門篇】2.7 MySQL基礎架構(一) InnoDB 基本概念:頁、區(qū)、段、

2023-08-02 20:28 作者:數據庫進階  | 我要投稿

MySQL基礎架構(一) InnoDB 基本概念

目錄

1 記錄

2 數據頁

3 區(qū)和段

4 表空間


1 記錄

每一條記錄是表中的一行數據,這些數據則是根據表的各個字段(或稱為列)來組織的。

記錄是按照主鍵(primary key)的順序存放的。記錄的存放結構如下:



2 數據頁

數據頁,有時也被稱為頁或塊,是數據庫文件系統(tǒng)的基本單位。它是一種存儲結構,數據庫系統(tǒng)通常將數據按頁的形式讀寫。每個頁有固定的大小,通常為4KB、8KB、16KB等,在很多數據庫系統(tǒng)中,這個大小是可配置的。

在MySQL的InnoDB存儲引擎中,數據頁的大小默認是16KB,包含了一些特定的信息,如頁頭和頁尾信息、用戶記錄和索引等。每個數據頁都有一個頁號,通過頁號可以定位到數據頁。

下面是一個InnoDB的數據頁的大致組成:

  1. 文件頭(File Header):針對所有頁,包含一些頁的元信息,例如當前頁號、下一個頁的頁號、上一個頁的頁號、頁面類型等。
  2. 頁頭(Page Header):專門針對存放數據的頁,包含數據頁的一些元信息,例如頁內記錄數量、修改當前頁最大的事務ID、當前頁在B+樹的哪個層級等。
  3. 用戶記錄(User Records):存放了記錄的真實數據以及記錄的額外信息,記錄按主鍵順序存儲。
  4. 頁目錄(Page Directory):存放了對用戶記錄的一些快速定位信息,可以提高搜索效率。
  5. Free Space:未使用的空間。
  6. 頁尾(Page Trailer):存儲頁的校驗和,用于數據完整性校驗。

數據頁結構簡單圖示:


3 區(qū)和段

在MySQL的InnoDB存儲引擎中,"區(qū)(Segment)" 是一個重要的存儲單位,通常包含多個連續(xù)的數據頁。其主要用于處理磁盤空間的分配和回收。段是一個邏輯的概念,是零散頁面或者完整區(qū)的集合。

區(qū)的結構圖如下所示:


以下是一些關于InnoDB中"區(qū)"的基本信息:

  1. 一個區(qū)的大小通常為1MB,由連續(xù)的64個數據頁組成,每個數據頁默認大小為16KB。當然,這些數值也可能因為InnoDB配置的不同而有所改變。每256個區(qū)劃分為一組,一組內的區(qū)有統(tǒng)一的元數據信息,統(tǒng)一管理。
  2. 區(qū)主要用于磁盤空間的分配和管理。當InnoDB需要存儲數據時,會申請一個或多個區(qū)。當一個區(qū)的空間用盡時,InnoDB會申請一個新的區(qū)。同樣地,當一個區(qū)中的所有頁都不再被需要時,InnoDB會釋放整個區(qū),將其歸還給操作系統(tǒng)。
  3. 區(qū)的類型:
  • 空閑的區(qū):現在還沒有用到這個區(qū)中的任何頁面。
  • 有剩余空間的碎片區(qū):表示碎片區(qū)中還有可用的頁面。
  • 沒有剩余空間的碎片區(qū):表示碎片區(qū)的所有頁面都被使用,沒有空閑頁面。
  • 附屬于某個段的區(qū):這些區(qū)會被組織成以下鏈表:
  • FREE 鏈表
  • NOT FULL 鏈表
  • FULL 鏈表

4.InnoDB會在后臺進行空閑區(qū)的回收,當空閑區(qū)達到一定數量時,會選擇一部分回收,歸還給操作系統(tǒng)。

段的結構圖如下所示:


可以看到,段和區(qū)的概念是緊密相連的。

4 表空間

表空間是一種物理存儲單元,用于存儲和組織數據庫中的數據和索引。具體來說,表空間是一個或者多個磁盤文件,這些文件中包含了各種數據結構,例如表的行數據、索引數據、Undo日志、Insert Buffer等。表空間由許多連續(xù)或非連續(xù)的區(qū)(Extent)組成。每個區(qū)是連續(xù)的1MB磁盤空間,由64個連續(xù)的數據頁(Page)組成,每個數據頁的大小默認為16KB。

表空間分類:

  1. 系統(tǒng)表空間:在InnoDB中,系統(tǒng)表空間是默認的、最重要的表空間,通常保存在名為"ibdata1"的文件中。系統(tǒng)表空間包含了InnoDB存儲引擎的各種關鍵數據結構,例如數據字典、雙寫緩沖區(qū)、Undo日志、Insert Buffer等。此外,如果沒有啟用獨立表空間,那么所有用戶表的數據和索引也會存儲在系統(tǒng)表空間中。
  2. 獨立表空間:InnoDB支持為每一個表或分區(qū)創(chuàng)建獨立的表空間,這通常被稱為獨立表空間。每個獨立表空間都保存在一個單獨的.ibd文件中。獨立表空間可以使表的管理更加靈活,例如可以將重要的表放在高性能的磁盤上,而將不太重要的表放在低性能的磁盤上。
  3. 臨時表空間:InnoDB會創(chuàng)建一個特殊的表空間用于存儲臨時表和臨時排序數據,這就是臨時表空間。臨時表空間通常保存在"ibtmp1"文件中。
  4. Undo表空間:較新的版本可以自定義Undo表空間,用于存儲Undo日志。在舊版本的InnoDB中,Undo日志是存儲在系統(tǒng)表空間中的。

系統(tǒng)表空間在磁盤中的存放位置:


獨立表空間在磁盤中的存放位置:


【入門篇】2.7 MySQL基礎架構(一) InnoDB 基本概念:頁、區(qū)、段、的評論 (共 條)

分享到微博請遵守國家法律
安康市| 名山县| 黔江区| 靖远县| 长乐市| 迁安市| 兴海县| 西青区| 伽师县| 武安市| 偃师市| 五指山市| 甘孜县| 刚察县| 芜湖市| 乌恰县| 张家界市| 疏勒县| 金山区| 皋兰县| 申扎县| 鄂尔多斯市| 福安市| 绥德县| 陇南市| 普兰县| 湖北省| 白河县| 进贤县| 金平| 营口市| 沙雅县| 长沙市| 黄浦区| 华宁县| 朝阳市| 班玛县| 山丹县| 怀安县| 新源县| 深泽县|