日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > MySQL InnoDB存儲引擎之表(二)

MySQL InnoDB存儲引擎之表(二)

來源:程序員人生   發布時間:2014-12-16 08:52:51 閱讀次數:3684次

本篇是繼續上1篇未完的部份繼續說的。

4.InnoDB數據頁結構
    頁是InnoDB存儲引擎管理數據庫的最小磁盤單位。頁類型為B-tree Node的頁寄存的就是表中行的實際數據。頁由以下7個部份組成:File Header(文件頭)、Page Header(頁頭)、Infimun和Supremum Records、User Records(行記錄)、Free Space(空閑空間)、Page Directory(頁目錄)和File Trailer(文件尾)。  以下圖:


    其中File Header、Page Header和File Trailer的大小是固定的,分別為38、56、8字節,用來標記該頁的1些信息,如checksum,數據頁所在B+樹索引的層數等。User Records、Free Space和Page Directory這些部份為實際的行記錄存儲空間,因此大小是動態的。下邊分別介紹1下各部份
    A.File Header
        File Header用來記錄1些頁的頭信息,由8個部份組成,共占用38字節。以下圖:


        其中FIL_PAGE_TYPE的具體類型以下圖:


    B.Page Header
        Page Header用來記錄數據頁的1些狀態信息,由14個部份組成,共占用56字節。以下圖:


    C.Infimun和Supremum
        在InnoDB存儲引擎中,每一個數據頁都有兩個虛擬的行記錄,用來限定記錄的邊界。Infimun記錄是比該頁中任何主鍵都要小的值,Supremum指比任何可能大的值還要大。都是在頁創建時被建立,并且在任何情況下都不會被刪除。在Compact和Redundant行格式下,占用的字節數不想同。以下圖:


    D.User Record和Free Space
        User Record就是實際存儲行記錄的內容。Free Space指空閑空間,一樣也是1個鏈表數據結構,在1條數據被刪除后,該空間會加入到空閑鏈表中。
    E.Page Directory
        Page Directory中寄存了記錄的相對位置(是頁相對位置而不是偏移量),有些時候這些記錄指針稱為Slots(槽)或Directory Slots(目錄槽)。在InnoDB存儲引擎的槽是1個稀疏目錄(spare directory),即1個槽中可能包括多個記錄。偽記錄Infimum的n_owned值總是1,記錄Supremum的n_owned的取值范圍為[1,8],其他用戶記錄n_owned的取值范圍[4,8]。當記錄被插入或刪除時需要對槽進行分裂或平衡的保護操作。在Slots中記錄是依照索引鍵值進行寄存的,這個模樣可以利用2叉查找迅速找到記錄的指針。由于InnoDB存儲引擎中Page Directory是稀疏目錄,2叉查找的結果是1個粗略的結果,因此InnoDB存儲引擎必須通過record header中的next_record來繼續查找相干記錄。B+樹索引本身其實不能找到具體的1條記錄,能找到只是該記錄所在的頁。數據庫把頁載入到內存中,然后通過Page Directory在進行2叉查找。2叉查找的時間復雜度很低,同時在內存中的查找很快,因此通常疏忽這部份查找所用的時間。
    F.File Trailer
        為了檢查頁是不是已完全的寫入磁盤(如可能產生的寫入進程中磁盤破壞、機器關機等),InnoDB存儲引擎的頁設置了File Trailer部份。File Trailer只有1個FIL_PAGE_END_LSN部份,占用8字節。前4字節代表該頁的checksum值,最后4字節和File Header中的FIL_PAGE_LSN相同。將這兩個值與File Header中的FIL_PAGE_SPACE_OR_CHECKSUM和FIL_PAGE_LSN值進行比較,看是不是1致(checksum的比較需要通過InnoDB的checksum函數來進行比較,不是簡單的等值比較),以此來保證頁的完全性。
        在默許配置下,InnoDB存儲引擎每次從磁盤讀取1個頁就會檢測該頁的完全性,即頁是不是產生Corrupt。用戶可以通過參數innodb_checksums來開啟或關閉這個頁完全性的檢查。MySQL 5.6.6版本開始新增參數innodb_checksum_algorithm來設置checksum函數的算法。默許為crc32,可以設置的值有:innodb、crc32、none、strict_innodb、strict_crc32、strict_none.
5.Named File Formats機制
    隨著InnoDB存儲引擎的發展,新的頁數據結構有時用來支持新的功能特性。如InnoDB 1.0.X版本提供了新的頁數據結構來支持表緊縮功能,完全的溢出(Off page)大變長字符類型字段的存儲。這些新的頁數據結構和之前版本的頁其實不兼容,因此InnoDB存儲引擎通過Named File Formats機制來解決不同版本之間的兼容性。通過參數innodb_file_format設置文件格式。通過參數innodb_file_format_check來檢測當前InnoDB存儲引擎文件格式的支持度,默許為ON。
6.視圖
    視圖(view)是1個命名的虛表,由1個SQL查詢來定義,可以當作表使用,與持久表不同的是,視圖中的數據沒有實際的物理存儲。在實際的開發中幾近都沒有用過,疏忽了~~
7.分區表
    分區的進程是將1個表或索引分解為多個更小、更可管理的部份。目前MySQL數據庫只支持水平分區,其實不支持垂直分區。在實際的開發中幾近都沒有用過,疏忽了~~

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 最近中文字幕在线mv视频7 | 国产精品免费视频观看 | 国内av网站 | 精品一区二区久久久久久久网站 | 亚洲第一在线 | 成人中文视频 | 国产精品国产精品国产专区不蜜 | 国产91一区二区三区 | 久久久久久艹 | 国产精品国产三级国产 | 免费毛片网 | 亚洲第一成人久久网站 | 草av在线| 国产在线视频一区二区三区 | 亚洲精品一区二区三区不 | 久久99国产精品免费网站 | 欧美日韩在线免费观看 | 一区二区国产精品 | 国产二区精品在线观看 | 日韩午夜高清 | 在线免费精品视频 | 视频福利一区二区 | v片在线观看| 丁香午夜 | 亚洲一区二区三区四区视频 | 91精品国产色综合久久 | 国产一级黄色片免费看 | 国产一级片网 | 久久精品夜夜夜夜夜久久 | 亚洲欧美日韩在线 | 精品在线| 超碰成人97 | 国产男女乱淫真高清视频免费 | 欧美在线视频一区 | av久久久| 毛片免费在线播放 | 在线视频日韩精品 | 亚洲欧美综合精品久久成人 | 麻豆成人久久精品二区三区小说 | 日韩一区二区三免费高清在线观看 | 日本一二三区视频 |