主頁(yè) > 知識(shí)庫(kù) > SQL Server頁(yè)類型匯總+疑問(wèn)匯總

SQL Server頁(yè)類型匯總+疑問(wèn)匯總

熱門標(biāo)簽:外呼系統(tǒng)的話術(shù) 智能語(yǔ)音車載電話機(jī)器人 云南全自動(dòng)外呼系統(tǒng)公司 陽(yáng)光創(chuàng)信ai外呼獲客系統(tǒng)助力 安陽(yáng)天音防封電銷卡 衛(wèi)星地圖標(biāo)注距離 競(jìng)圣地圖標(biāo)注服務(wù) 貴州外呼回?fù)芟到y(tǒng)是什么 智能外呼系統(tǒng)需要多少錢

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page Free Space,跟蹤頁(yè)的可用空間。
第一個(gè)PFS頁(yè)總是存儲(chǔ)在每個(gè)數(shù)據(jù)文件PageID為1的頁(yè)上DBCC PAGE 中m_type=11

類型10——啟動(dòng)頁(yè)(Boot Page):

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

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

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

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

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

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

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

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

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

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

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

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

 

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


但是事實(shí)是嗎?我們將data_type=BULK_OPERATION_PAGE的記錄查出來(lái):

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é)果:

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

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

我搜遍了google也沒(méi)有找到m_type=20是什么記錄!

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

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

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

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

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

我們將PageID7帶入DBCC PAGE:

Oh,SHIT!這個(gè)的m_type是17!

好吧,我只能說(shuō),是我曲解了人家字面的意思,原來(lái):

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

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

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

您可能感興趣的文章:
  • SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE
  • SQLServer 數(shù)據(jù)庫(kù)的數(shù)據(jù)匯總完全解析(WITH ROLLUP)
  • SQL Server優(yōu)化50法匯總
  • SQLServer與Oracle常用函數(shù)實(shí)例對(duì)比匯總
  • SQL Server數(shù)據(jù)匯總五招輕松搞定

標(biāo)簽:湘潭 河源 欽州 營(yíng)口 周口 鄂爾多斯 寧夏 預(yù)約服務(wù)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server頁(yè)類型匯總+疑問(wèn)匯總》,本文關(guān)鍵詞  SQL,Server,頁(yè),類型,匯總,疑問(wèn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server頁(yè)類型匯總+疑問(wèn)匯總》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于SQL Server頁(yè)類型匯總+疑問(wèn)匯總的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章