亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MYSQL中COMPACT行格式的具體使用

 更新時(shí)間:2024年08月31日 10:38:45   作者:小周同志啊  
compact行格式是mysql中InnoDB存儲(chǔ)引擎存儲(chǔ)數(shù)據(jù)使用的一種行格式,本文主要介紹了MYSQL中COMPACT行格式的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

MySQL 的數(shù)據(jù)存放在哪個(gè)文件?

當(dāng)我們輸入下面的命令之后:就可以看到 /var/lib/mysql

mysql> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)時(shí), 都會(huì)在 /var/lib/mysql/ 目錄里面創(chuàng)建一個(gè)以 database 為名的目錄

在數(shù)據(jù)庫(kù)中創(chuàng)建表時(shí),

[root@root]#ls /var/lib/mysql/test
db.opt  
t_test.frm  
t_test.ibd

總結(jié)(回答問(wèn)題): MySQL 5.6.6之后,mysql的數(shù)據(jù)默認(rèn)存放到 .ibd后綴的文件(獨(dú)占表空間文件) 中。

  • db.opt:用來(lái)存儲(chǔ)當(dāng)前數(shù)據(jù)庫(kù)的默認(rèn)字符集字符校驗(yàn)規(guī)則。

  • t_test.frm:t_test 的表結(jié)構(gòu)會(huì)保存在這個(gè)文件。在 MySQL 中建立一張表都會(huì)生成一個(gè).frm 文件,用來(lái)保存每個(gè)表的元數(shù)據(jù)信息的,主要包含表結(jié)構(gòu)定義。

  • t_test.ibd:t_test 的表數(shù)據(jù)會(huì)保存在這個(gè)文件。表數(shù)據(jù)既可以存在共享表空間文件(文件名:ibdata1)里,也可以存放在獨(dú)占表空間文件(文件名:表名字.ibd)。這個(gè)行為是由參數(shù) innodb_file_per_table 控制的,若設(shè)置了參數(shù) innodb_file_per_table 為 1,則會(huì)將存儲(chǔ)的數(shù)據(jù)、索引等信息單獨(dú)存儲(chǔ)在一個(gè)獨(dú)占表空間,從 MySQL 5.6.6 版本開(kāi)始,它的默認(rèn)值就是 1 了,因此從這個(gè)版本之后, MySQL 中每一張表的數(shù)據(jù)都存放在一個(gè)獨(dú)立的 .ibd 文件。

InnoDB 行格式有哪些?

InnoDB 提供了 4 種行格式:Redundant(冗余)、Compact(緊湊)、Dynamic(動(dòng)態(tài)) 和 Compressed(壓縮行)

  • Redundant:很古老的行格式, MySQL 5.0 版本之前用的行格式,現(xiàn)在基本沒(méi)人用了。

  • Compact: 是一種緊湊的行格式,設(shè)計(jì)的初衷就是為了讓一個(gè)數(shù)據(jù)頁(yè)中可以存放更多的行記錄,從 MySQL 5.1 版本之后,行格式默認(rèn)設(shè)置成 Compact。

  • Dynamic 和 Compressed 兩個(gè)都是緊湊的行格式,它們的行格式都和 Compact 差不多,因?yàn)槎际腔?Compact 改進(jìn)一點(diǎn)東西。從 MySQL5.7 版本之后,默認(rèn)使用 Dynamic 行格式。

其中 Dynamic 和 Compressed 與 Compact格式特別像

 COMPACT 行格式長(zhǎng)什么樣?

(結(jié)構(gòu)如圖:來(lái)自小林coding)

記錄的額外信息

記錄的額外信息包含 3 個(gè)部分:變長(zhǎng)字段長(zhǎng)度列表、NULL 值列表、記錄頭信息。

1. 變長(zhǎng)字段長(zhǎng)度列表

表的一行數(shù)據(jù)中,找出類(lèi)型為 varchar的字段,并將其倒序存儲(chǔ)在 變長(zhǎng)字段長(zhǎng)度列表。

比如:表的一行數(shù)據(jù)中,varchar字段name為11,varchar字段phone是123。

  • 那么這個(gè)行記錄的變長(zhǎng)字段長(zhǎng)度列表存儲(chǔ)樣式為 03 02

注意:

為什么「變長(zhǎng)字段長(zhǎng)度列表」的信息要按照逆序存放?

  • 因?yàn)檫@樣可以 使得位置靠前的記錄的真實(shí)數(shù)據(jù)和數(shù)據(jù)對(duì)應(yīng)的字段長(zhǎng)度信息可以同時(shí)在一個(gè) CPU Cache Line 中,這樣就可以提高 CPU Cache 的命中率。

每個(gè)數(shù)據(jù)庫(kù)表的行格式都有「變長(zhǎng)字段字節(jié)數(shù)列表」嗎?

  • 當(dāng)數(shù)據(jù)表沒(méi)有變長(zhǎng)字段的時(shí)候,比如全部都是 int 類(lèi)型的字段,這時(shí)候表里的行格式就不會(huì)有「變長(zhǎng)字段長(zhǎng)度列表」了

2. NULL 值列表

如果存在允許 NULL 值的列,則每個(gè)列對(duì)應(yīng)一個(gè)二進(jìn)制位(bit),二進(jìn)制位按照列的順序逆序排列。

  • 二進(jìn)制位的值為1時(shí),代表該列的值為NULL。

  • 二進(jìn)制位的值為0時(shí),代表該列的值不為NULL。

  • 另外,NULL 值列表必須用整數(shù)個(gè)字節(jié)的位表示(1字節(jié)8位),如果使用的二進(jìn)制位個(gè)數(shù)不足整數(shù)個(gè)字節(jié),則在字節(jié)的高位補(bǔ) 0。

注意:

每個(gè)數(shù)據(jù)庫(kù)表的行格式都有 NULL 值列表 嗎?

  • NULL 值列表 不是必須的。
  • 當(dāng)數(shù)據(jù)表的字段都定義成 NOT NULL 的時(shí)候,這時(shí)候表里的行格式就不會(huì)有 NULL 值列表了。
  • 所以在設(shè)計(jì)數(shù)據(jù)庫(kù)表的時(shí)候,通常都是建議將字段設(shè)置為 NOT NULL,這樣可以至少節(jié)省 1 字節(jié)的空間(NULL 值列表至少占用 1 字節(jié)空間)。

NULL 值列表 是固定 1 字節(jié)空間嗎?如果這樣的話,一條記錄有 9 個(gè)字段值都是 NULL,這時(shí)候怎么表示?

  • NULL 值列表 的空間不是固定 1 字節(jié)的。
  • 當(dāng)一條記錄有 9 個(gè)字段值都是 NULL,那么就會(huì)創(chuàng)建 2 字節(jié)空間的 NULL 值列表,以此類(lèi)推。

記錄的真實(shí)數(shù)據(jù)

 1. row_id

如果我們建表的時(shí)候指定了主鍵或者唯一約束列,那么就沒(méi)有 row_id 隱藏字段了。如果既沒(méi)有指定主鍵,又沒(méi)有唯一約束,那么 InnoDB 就會(huì)為記錄添加 row_id 隱藏字段。row_id不是必需的,占用 6 個(gè)字節(jié)。

 2. trx_id

事務(wù)id,表示這個(gè)數(shù)據(jù)是由哪個(gè)事務(wù)生成的。 trx_id是必需的,占用 6 個(gè)字節(jié)。

 3. roll_pointer

這條記錄上一個(gè)版本的指針。roll_pointer 是必需的,占用 7 個(gè)字節(jié)。

到此這篇關(guān)于MYSQL中COMPACT行格式的具體使用的文章就介紹到這了,更多相關(guān)MYSQL COMPACT行格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL 使用 Performance Schema 定位和解決慢 SQL 問(wèn)題

    MySQL 使用 Performance Schema 定位和解決慢 

    本文介紹了如何使用MySQL的PerformanceSchema來(lái)定位和解決慢SQL查詢問(wèn)題,通過(guò)啟用PerformanceSchema并分析相關(guān)的系統(tǒng)表,可以收集到詳細(xì)的性能數(shù)據(jù),從而識(shí)別出影響性能的SQL語(yǔ)句,優(yōu)化策略包括優(yōu)化查詢語(yǔ)句、調(diào)整數(shù)據(jù)庫(kù)配置等
    2025-02-02
  • mysql 8.0.18 安裝配置方法圖文教程

    mysql 8.0.18 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.18 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 從 MySQL源碼分析網(wǎng)絡(luò)IO模型

    從 MySQL源碼分析網(wǎng)絡(luò)IO模型

    這篇文章主要為大家介紹了從 MySQL源碼分析網(wǎng)絡(luò)IO模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • mysql中g(shù)rant?all?privileges?on賦給用戶遠(yuǎn)程權(quán)限方式

    mysql中g(shù)rant?all?privileges?on賦給用戶遠(yuǎn)程權(quán)限方式

    這篇文章主要介紹了mysql中g(shù)rant?all?privileges?on賦給用戶遠(yuǎn)程權(quán)限方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • MySQL觸發(fā)器 Update觸發(fā)Insert失敗

    MySQL觸發(fā)器 Update觸發(fā)Insert失敗

    這篇文章主要介紹了MySQL觸發(fā)器 Update觸發(fā)Insert失敗 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • mysql如何判斷同一字段是否有重復(fù)數(shù)據(jù)

    mysql如何判斷同一字段是否有重復(fù)數(shù)據(jù)

    這篇文章主要介紹了mysql如何判斷同一字段是否有重復(fù)數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT

    關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT

    這篇文章主要介紹了關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • mysql數(shù)據(jù)庫(kù)navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù)的解決

    mysql數(shù)據(jù)庫(kù)navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù)的解決

    本文主要介紹了mysql數(shù)據(jù)庫(kù)navicat數(shù)據(jù)同步時(shí)誤刪除部分?jǐn)?shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • mysql觸發(fā)器實(shí)時(shí)檢測(cè)一條語(yǔ)句進(jìn)行備份刪除思路詳解

    mysql觸發(fā)器實(shí)時(shí)檢測(cè)一條語(yǔ)句進(jìn)行備份刪除思路詳解

    遇到過(guò)這樣一個(gè)需求,在一張表里會(huì)不時(shí)出現(xiàn) “違規(guī)” 字樣的字段,需要在出現(xiàn)這個(gè)字段的時(shí)候,把整行的數(shù)據(jù)刪掉,針對(duì)這個(gè)需求我們?cè)撊绾尾僮髂?,下面跟隨小編看下mysql觸發(fā)器實(shí)時(shí)檢測(cè)一條語(yǔ)句進(jìn)行備份刪除的解決思路,一起看看吧
    2021-09-09
  • SQL去重方法匯總

    SQL去重方法匯總

    這篇文章主要給大家分享了SQL去重方法匯總,在使用SQL提數(shù)的時(shí)候,常會(huì)遇到表內(nèi)有重復(fù)值的時(shí)候,比如我們想得到?uv?(獨(dú)立訪客),就需要做去重。下面我們就來(lái)看看去重都有哪些方法吧
    2022-01-01

最新評(píng)論