午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    SQL Server頁類型匯總+疑問匯總
    來源:易賢網(wǎng) 閱讀:1415 次 日期:2014-05-12 15:09:19
    溫馨提示:易賢網(wǎng)小編為您整理了“SQL Server頁類型匯總+疑問匯總”,方便廣大網(wǎng)友查閱!

    SQL Server中包含多種不同類型的頁,來滿足數(shù)據(jù)存儲的需求。不管是什么類型的頁,它們的存儲結(jié)構(gòu)都是相同的。每個數(shù)據(jù)文件都包含相當(dāng)數(shù)量的由8KB組成的頁,即每頁有8192bytes可用,每頁都有96byte用于頁頭的存儲,剩下的空間

    才用來存儲實際的數(shù)據(jù),在頁的最后是數(shù)據(jù)行偏移數(shù)組,也可以叫“頁槽”數(shù)組,我們可以把一個頁看做是有一個個方格的書櫥,哪行數(shù)據(jù)占用了哪個槽,都在頁尾的位置進(jìn)行標(biāo)示,并且頁尾數(shù)組的寫入順序是倒敘的,這樣就可以有效的利用頁空間。

    由此可以預(yù)見,頁面上的“槽”并不一定是有序存放的,當(dāng)有新的ID進(jìn)來,并且該ID位于該頁的最大ID和最小ID之間時(假設(shè)是以ID進(jìn)行排序的葉子頁),那么該ID數(shù)據(jù)行則直接插入到已經(jīng)存在的數(shù)據(jù)行的后面即可,當(dāng)有查詢需要檢索該ID所在的行時,

    數(shù)據(jù)庫引擎從索引頁找到該“葉子”頁,將該頁全部加載到內(nèi)存中,通過頁尾的行偏移數(shù)組找到對應(yīng)的行。頁尾數(shù)組的記錄大小存儲在頁頭里,數(shù)組里面每一個關(guān)于“頁槽”的記錄占用空間為2bytes。

    1.jpg

    據(jù)我所知,SQL Server數(shù)據(jù)文件共有14種頁類型:

    類型1——數(shù)據(jù)頁(Data Page):堆中的數(shù)據(jù)頁聚集索引中的“葉子”頁在數(shù)據(jù)文件中的位置是隨機的DBCC PAGE 中m_type=1

    類型2——索引頁(Index Page):

    非聚集索引非“葉子”級聚集索引在數(shù)據(jù)文件中的位置是隨機的DBCC PAGE 中m_type=2

    類型3——文本混合頁(Text Mixed Page):

    較短長度的LOB數(shù)據(jù)類型,多種類型,多行存儲在數(shù)據(jù)文件中的位置是隨機的DBCC PAGE 中m_type=3

    類型4——文本頁(Text Tree Page):

    存儲單個LOB行在數(shù)據(jù)文件中的位置是隨機的DBCC PAGE 中m_type=4

    類型5——排序頁(Sort Page):

    進(jìn)行排序操作時的臨時頁常見于TempDB中,在用戶數(shù)據(jù)中進(jìn)行“ONLINE"操作時也可見(例如:聯(lián)機創(chuàng)建索引未指定SORT_IN_TEMPDB選項時)在數(shù)據(jù)文件中的位置是隨機的DBCC PAGE 中m_type=19

    類型6——全局分配映射頁(GAM Page):

    Global Allocation Map,記錄已分配的非共享(混合)區(qū)是否已被使用每個區(qū)占用一個bit位,如果該值為1,說明該區(qū)可以使用,0則說明已被使用(但是并不一定存儲空間已滿)第一個GAM頁總是存儲在每個數(shù)據(jù)文件PageID為2的頁上DBCC PAGE 中m_type=8

    類型7——共享全局分配映射頁(SGAM Page):

    Shared Global Allocation Map,記錄每一個共享(混合)區(qū)是否已被使用每個區(qū)占用一個bit位,如果該值為1,說明該區(qū)有空閑的存儲空間,0則說明區(qū)已滿第一個SGAM頁總是存儲在每個數(shù)據(jù)文件PageID為3的頁上DBCC PAGE 中m_type=9

    類型8——索引分配映射頁(IAM Page):

    Index Allocation Map,記錄GAM頁之間堆表或者索引的區(qū)分配在數(shù)據(jù)文件中的位置是隨機的DBCC PAGE 中m_type=10

    類型9——空閑空間跟蹤頁(PFS Page):

    Page Free Space,跟蹤頁的可用空間。

    第一個PFS頁總是存儲在每個數(shù)據(jù)文件PageID為1的頁上DBCC PAGE 中m_type=11

    類型10——啟動頁(Boot Page):

    存儲所在數(shù)據(jù)庫范圍的信息僅在每個數(shù)據(jù)庫文件(file)ID為1的PageID為9的頁上DBCC PAGE 中m_type=13

    類型11——服務(wù)配置頁(Server Configuration Page):

    存儲了sys.configurations中返回結(jié)果中的部分信息該頁僅存在于master數(shù)據(jù)庫的文件ID為1PageID為10的頁上

    類型12——文件頭頁(File Header Page):

    所在文件的信息總是存在于每個文件PageID為0的頁上DBCC PAGE 中m_type=15

    類型13——差異更改映射(Differential Changed map):

    記錄GAM之間的每次全備或差異備份之后更改過的頁面第一個DCM頁面在每個數(shù)據(jù)文件PageID為6的頁上DBCC PAGE 中m_type=16

    類型14——大容量更改映射(Bulk Change Map):

    記錄每個GAM之間上次備份之后大容量操作的更改第一個BCM頁面在每個數(shù)據(jù)文件PageID為7的頁上DBCC PAGE 中m_type=17

    如下SQL可以查詢到你當(dāng)前的數(shù)據(jù)庫中的緩存的頁類型及數(shù)量:

    SELECT CASE page_type WHEN 'DIFF_MAP_PAGE' THEN '差異更改映射(Differential Changed map)' WHEN 'TEXT_MIX_PAGE' THEN '文本混合頁(Text Mixed Page)' WHEN 'ML_MAP_PAGE' THEN '這個字面意思應(yīng)該是Minimally-Logged,最小化日志記錄' WHEN 'INDEX_PAGE' THEN '索引頁(Index Page)' WHEN 'FILEHEADER_PAGE' THEN '文件頭頁(File Header Page)' WHEN 'DATA_PAGE' THEN '數(shù)據(jù)頁(Data Page)' WHEN 'IAM_PAGE' THEN '索引分配映射頁(IAM Page)' WHEN 'GAM_PAGE' THEN '全局分配映射頁(GAM Page)' WHEN 'BULK_OPERATION_PAGE' THEN '這個字面意思應(yīng)該是大容量更改記錄' WHEN 'TEXT_TREE_PAGE' THEN '文本頁(Text Tree Page)' WHEN 'SGAM_PAGE' THEN '共享全局分配映射頁(SGAM Page)' WHEN 'PFS_PAGE' THEN '空閑空間跟蹤頁(PFS Page)' WHEN 'BOOT_PAGE' THEN '啟動頁(Boot Page)' ELSE '排序頁?' END , page_type , COUNT(*) cntFROM sys.dm_os_buffer_descriptors WITH ( NOLOCK )WHERE database_id = DB_ID()GROUP BY page_type

    結(jié)果如下圖所示:

    2.jpg

    按上面的數(shù)據(jù)類型介紹,我們很自然地認(rèn)為類型14——大容量更改映射(Bulk Change Map)就是圖示查詢結(jié)果中第10行BULK_OPERATION_PAGE

    但是事實是嗎?我們將data_type=BULK_OPERATION_PAGE的記錄查出來:

    SELECT TOP 10 *FROM sys.dm_os_buffer_descriptors WHERE page_type='BULK_OPERATION_PAGE' AND DB_ID()=database_id

    ORDER BY database_id,FILE_ID,page_id

    查詢結(jié)果:

    3.jpg

    我們把查詢結(jié)果中的一個PageID帶入DBCC PAGE(其實這里已經(jīng)看出,這個pageID并不像上面說的第一個BCM頁面在每個數(shù)據(jù)文件PageID為7的頁上,它們是邏輯上連續(xù)的頁!

    4.jpg

    我們發(fā)現(xiàn)上面的m_type=20!

    我搜遍了google也沒有找到m_type=20是什么記錄!

    參考網(wǎng)址:http://www.sqlskills.com/BLOGS/PAUL/post/Inside-the-Storage-Engine-Anatomy-of-a-page.aspx

    但是我們可以查到如下信息:

    5.jpg

    m_type=17的這個數(shù)據(jù)類型ML map page,是在“大容量日志”模式下,記錄自上次備份以來哪些區(qū)被更改過,該頁第一個位置總是在每個文件的第7頁上,我們折回上面第一個查詢時的第三行,即PageType是ML_MAP_PAGE的那行,

    并將其帶入如下SQL查詢出pageID的記錄:

    6.jpg

    發(fā)現(xiàn)這才是傳說中的那個第一頁總是出現(xiàn)在每個文件第7頁的混蛋!

    我們將PageID7帶入DBCC PAGE:

    7.jpg

    Oh,SHIT!這個的m_type是17!

    好吧,我只能說,是我曲解了人家字面的意思,原來:

    BCM ,大容量更改映射(Bulk Change Map),在數(shù)據(jù)庫緩存中對應(yīng)的PageType竟然是ML_MAP_PAGE!Minimally-Logged Page!

    而那個該死的BULK_OPERATION_PAGE(m_type=20)是什么東西,誰能告訴我?

    另外那個UNLINKED_REORG_PAGE,應(yīng)該就是排序頁吧?

    更多信息請查看IT技術(shù)專欄

    更多信息請查看數(shù)據(jù)庫
    易賢網(wǎng)手機網(wǎng)站地址:SQL Server頁類型匯總+疑問匯總
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)