91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

InnoDB中邏輯存儲結構的示例分析

發布時間:2021-09-16 09:51:07 來源:億速云 閱讀:140 作者:小新 欄目:MySQL數據庫

這篇文章主要為大家展示了“InnoDB中邏輯存儲結構的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“InnoDB中邏輯存儲結構的示例分析”這篇文章吧。

InnoDB邏輯存儲結構

在InnoDB中我們創建的表還有對應的索引數據都存儲在擴展名為.ibd 的文件中,這個文件路徑可以先通過查mysql變量datadir來得到,然后進入對應的數據庫名目錄,會看到很多ibd,文件名就是表名,這里有兩種類型的表空間,共享表空間(或者叫系統表空間)和獨立表空間文件。

對于共享表空間,所有的表數據和相應索引都存放在這里,而獨立表空間,就是每個表的數據和索引都存放在一個單獨的ibd文件中,在目前的MySQL版本中,默認都是使用的獨立表空間。

共享表空間文件名可以通過innodb_data_file_path得到,

mysql> show variables like 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+-----------------------+------------------------+
1 row in set (0.00 sec)

獨立和共享表空間可以通過innodb_file_per_table切換,如果啟用了他,那么每張表內的數據就單獨放在一個表空間文件中,還需要注意,每個表的表空間只存儲數據、索引,其他類的數據,如回滾信息、系統事務信息、二次寫緩沖仍存儲在原始共享表空間中。

下面語句可以查看innodb_file_per_table的狀態。

mysql> show variables like '%innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.01 sec)

修改innodb_file_per_table狀態

set global innodb_file_per_table=0;

如果在innodb_file_per_table等于0的情況下,也就是OFF關閉情況下,創建的表都會存放的系統共享的表空間中,比如下面的列子。

1.創建database_1數據庫
mysql> create  database database_1;
Query OK, 1 row affected (0.02 sec)

2. 當前狀態
mysql> show variables like '%innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.01 sec)

3. 創建表
mysql> create table t1(id int(11));
Query OK, 0 rows affected, 1 warning (0.05 sec)


4. 查看ibd文件
root@hxl-PC:/var/lib/mysql/database_1# ls
t1.ibd
root@hxl-PC:/var/lib/mysql/database_1# 

5. 關閉innodb_file_per_table后在創建表
mysql> set global innodb_file_per_table=0;
Query OK, 0 rows affected (0.01 sec)

mysql> create table t2(id int(11));
Query OK, 0 rows affected, 1 warning (0.05 sec)
6. 查看ibd文件
root@hxl-PC:/var/lib/mysql/database_1# ls
t1.ibd

可以發現在關閉后,沒有創建新的ibd文件。

表空間又由段(segment)、區(extent)、頁(page)組成,引入一張網絡圖片。

InnoDB中邏輯存儲結構的示例分析

1.段

表空間由段組成,他是一個邏輯結構,用來管理物理文件,常見的段有數據段、索引段、回滾段,每個段由N個區和32個零散的頁組成。

InnoDB存儲引擎表是索引組織的,所以數據就是索引,索引就是數據,通常情況下,創建一個索引的同時就會創建兩個段,分別為非葉子節點和葉子節點段。

2.區

區是由連續的頁組成的空間,無論如何,每個區的大小都是1MB。為了保證區域內頁面的連續性,InnoDB存儲引擎一次從磁盤申請4-5個區域。默認情況下,InnoDB存儲引擎的頁面大小為16KB,也就是有有64個連續頁面,16*64=1024=1M。

InnoDB1.2.x版本增加了參數innodb_page_size,這個參數允許設置默認頁面大小為4K、8K,

3.頁

頁是InnoDB存儲引擎磁盤管理的最小單位,默認16kb,可以通過參數innodb_page_size設置頁大小為4K、8K、16K 。InnoDB為了實現不同的目的而設計了很多種頁,InnoDB 存儲引擎中常見的頁面類型有:

  • 數據頁

  • undo頁面

  • 系統頁面

  • 事物數據頁面(交易系統頁面)

  • 插入緩沖位圖頁

  • 插入緩沖區空閑列表頁

  • 未壓縮的二進制大對象頁面

  • 壓縮二進制大對象頁面

可以通過以下命令查看大小。

mysql> show status like 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)

mysql>

下面是InnoDB數據頁結構,它由七部分組成。

InnoDB中邏輯存儲結構的示例分析

名稱作用
File header記錄了頁頭的一些信息,cheksum、Ppervious和next page的記錄
Page header記錄了頁的狀態信息和存儲信息、首個記錄的position
Infimum+ supremumInnoDB每個數據頁有兩個虛擬行記錄,用來限定記錄邊界
Row records實際存儲的行數據信息
Free space空閑空間,同樣是鏈表結構
Page directory存放了記錄的相對位置
File trailerinnodb利用它來保證頁完整地寫入磁盤

4.行

InnoDB存儲引擎是面向行的,頁里面又記錄著行記錄的信息,也就是數據是按照行存儲的。行記錄數據又是按照行格式進行存放的。每個頁存放的行記錄也是有硬性定義的,最多允許存放16KB/2-200行,也就是7992行。

InnoDB存儲引擎有兩種文件格式,一種叫Antelops,另外一種叫Barracuda。

在Antelope文件格式下,有compact和redundant兩種行記錄格式。

在Barracuda文件格式下,有compressed和dynamic兩種行記錄格式。

可以通過以下方式查看當前格式,其中Row_format就是對應行格式存儲類型。

mysql> show table status \G;
*************************** 1. row ***************************
           Name: t1
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 15
 Avg_row_length: 1092
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2021-08-24 09:43:29
    Update_time: 2021-08-24 14:43:35
     Check_time: NULL
      Collation: utf8mb4_0900_ai_ci
       Checksum: NULL
 Create_options: 
        Comment:

以上是“InnoDB中邏輯存儲結構的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇州县| 青岛市| 东阿县| 安图县| 涪陵区| 高邑县| 鲜城| 沾化县| 苍山县| 巴林左旗| 沽源县| 乌兰浩特市| 呼图壁县| 理塘县| 肥西县| 彩票| 江阴市| 达孜县| 阜城县| 定结县| 勐海县| 南投市| 手游| 玉龙| 西乡县| 阜康市| 营山县| 仁怀市| 阳东县| 高唐县| 安溪县| 响水县| 宽甸| 兴义市| 平邑县| 黑龙江省| 资中县| 辉南县| 体育| 诸城市| 南陵县|