日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SQL Server 数据库文件管理

發布時間:2025/3/15 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server 数据库文件管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于數據庫文件的管理問題,我經常說,常在江湖混,哪有不挨棍,用的時間長了,基本上都有遇到一些數據庫文件管理上的問題,比如說:

1. SQL Server數據文件空間滿

2. 日志文件暴漲

3. 文件不能收縮

4. 如何實現文件的自動增長和自動收縮

? ? ? 這篇文章就圍繞這些問題展開,當然要想熟練的對數據庫空間進行管理,需要先了解一下相關的理論知識。首先,我們先來看一下數據文件的空間管理。

數據文件空間管理

? ? ? ?每個 SQL Server 數據庫至少具有兩個操作系統文件:一個數據文件和一個日志文件。 ?數據文件包含數據和對象,例如表、索引、存儲過程和視圖。 日志文件包含恢復數據庫中的所有事務所需的信息。 為了便于分配和管理,可以將數據文件集合起來,放到文件組中。在SQL Server中數據存儲的基本單位稱為頁。每頁是8KB,SQL Server讀取或者是寫入數據的最小單位也是頁,那么1MB就有128頁。行不能跨頁(頁的單個行最大數量是8,060字節8kb 1024*8),不包括Text/Image類型的頁數據,對于可變長類型的列,如果行超過8060,則從最大長度的列開始,將一個或多個可變長度列移動到ROW_OVERFLOW_DATA分配單元中的頁,在原始頁上維護一個24字節的指針,如果行的總大小小于8060,就再移回來.執行查詢等操作時將延長處理時間,因為這些記錄將同步處理,而不是異步。

如下圖所示:

? ? ? 但還有另一個概念,大家要知道,叫做區,區是指8個物理上連續的頁的集合,如果這8個物理上連續的頁屬于同一個表,則這種區稱為統一區,如果這8個頁分別屬于至少兩個不同的表。則這種區稱為混合區。

? ? ?雖然每個頁有8KB,但并不是說這8KB都用來存放具體數據,每頁的開頭有一個96字節的頁頭,用來存儲有關頁的系統信息,例如:頁碼、頁類型、頁的可用空間以及擁有該頁的對象ID(也就是這個頁是哪個對象在用)。不同類型的數據,存放在不同類型的頁里面。如下圖所示,就顯示了數據文件中各種頁類型以及它們里面存放的內容:

? ? ? ?在這里面,我們用到較多的頁是Data和Text/Image類型,而在一個數據文件的開頭則分布很多管理頁面如:GM、SGAM、PFS。SQL Server通過這些頁面知道這個數據文件中的哪些頁面已經使用,哪些頁面還沒有使用等。

? ? ? 當一張表或一個索引需要更多的空間時,SQL Server需要找到能夠用來分配的空間。如果該表或索引整體仍然少于8個頁面,SQL Server必須找到能夠用來分配的混合類型區構成的空間。如果表或索引有8個頁面或更大,SQL Server必須找到一個自由的統一類型的區。那么SQL Server就需要知道區已經分配出去,哪些區可以使用,這就要用到全局分配映射頁面和共享全局分配映射頁面,簡稱為:GAM/SGAM。

? ? ?GAM記錄了哪些區已經被分配并用作何種用途。一個GAM頁面在它所覆蓋空間里針對每一個區都有一個數據位。如果為1,則為空閑區,可以用來分配,如果為0則該區已經被使用。GAM大約能標識64000個區,也就是4G的空間。如果超過4G,則再啟用一個GAM頁來標識下一個4G空間。

? ? ? ?SGAM記錄了哪些區當前是混合區,并且至少有一個未使用的頁面。它也能標識64000個區,大約4G空間。如果bit位標識為1,則說明它使用的是混合區并且至少有一個頁可用來分配 。如果為0,則說明是統一區,或者是混合區,但已經沒有空閑頁面。

? ? ? ?那么SQL Server可以很方便地查找需要的頁面,如需要一個新的完全沒有使用的區,那么可以使用任何一個在GAM頁面中對應的比特位值為1的區。如果需要找到一個有著可用空間,如一個或多個自由頁面的混合類型的區,那么它可以尋找一個對應的GAM中的值為0、SGAM中的值為1的區。如果不存在有可用空間的混合類型的區,SQL Server會使用GAM頁面來尋找一個全新的區并將其分配為混合類型的區,然后使用該區中的一頁。如果根本沒有自由區,那么這個文件已經滿了。 ??

? ? ? ?SQL Server能夠迅速地鎖定一個文件中的GAM頁面,因為它總是位于任何數據庫文件的第三頁上(頁碼為2)。SGAM頁面是在第四頁上(頁碼為3)。下一個GAM頁面出現在第一個GAM頁面(頁碼為2)以后的每511 230個頁面中,并且下一個SGAM頁面出現在第一個SGAM頁面(頁碼為3)以后的每511 230個頁面中。每一個數據庫文件的頁碼為0的頁面是文件頭頁面,并且每個文件僅有一頁。頁碼0是頭文件頁,頁碼1是頁面自由空間頁(Page Free Space,PFS)。并且每一個數據庫的前八個頁面是固定不變的。

? ? ? ?下面,我們可以通過DBCC Page命令查看某一個數據庫的頁面信息,此命令的語法是:

? ? ? ?dbcc page(數據庫名稱|數據庫ID,文件編號,頁面編號,輸出選項)

輸出選項:0:默認值,輸出緩沖區的標題和頁面標題;1:輸出緩沖區的標題、頁面標題(分別輸出每一行),以及行偏移量表;2:輸出緩沖區的標題、頁面標題(整體輸出頁面),以及行偏移量表。3:輸出標題的同時,顯示列值。

? ? ? ?但需要此命令之前,必須啟用DBCC TRACEON(3604)。

一個完整的頁面包含四個部分BUFFER、PAGE HEADER、DATA、OFFSET TABLE,分別表示緩存、頁面的頭部信息、數據和偏移表。

BUFFER:緩存部分,用于標識頁在內存中的位置。

PAGE HEADER:頁面頭部信息,包括一些重要屬性,如:m_pageid為頁編號;m_headerversion為頁頭格式的版本;m_type為頁的類型,如:1,表明是數據頁,2為索引頁,8為GAM頁,9為SGAM頁等;m_typeflagebits:類型標識位,基本上用不到;m_level為在B樹結構中的層級,最底層的層級為0;m_flagbits為頁的屬性,如0x200表明頁有checksum檢查;m_prevpage和m_nextpage,在B樹結構的同一層級數據頁之間,互相通過m_prevpage和m_nextpage連接起來;m_slotcnt表明當前頁中有多少條記錄;m_freecnt表明當前頁中還剩余多少 空間,以字節為單位。m_lsn表明當前頁中的所有記錄中,最后一個改變相對應的日志記錄號。

DATA部分一般分為若干插槽號(Slot),如果是數據頁或索引頁的話,可以理解為一行記錄,SQLServer通過文件號+頁面號+插槽號用來唯一標識表中的每一條記錄。但在GAM頁中我們可以把Slot 0理解為GAM頁的保留頁,共計94個字節。

頁的末尾是行偏移表,對于頁中的每一行,每個行偏移表都包含一個條目。每個條目記錄對應行的第一個字節與頁首的距離。行偏移表中的條目的順序與頁中行的順序相反。如下圖所示:

? ? ?我們可以看到第一個數據行,也就是上圖中的最后一個記錄,偏移量是96,這是因為正常好前面的是96個字節的頭部,接下來正好是第一條記錄,其他記錄的分析,依次類推。

轉載于:https://www.cnblogs.com/lenther2002/p/4494974.html

總結

以上是生活随笔為你收集整理的SQL Server 数据库文件管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲三级在线看 | 亚洲操片 | 特级丰满少妇一级aaaa爱毛片 | 91视频免费观看网站 | 99精品视频99 | 在线观看日韩国产 | 国产一区二区三区三州 | 内射合集对白在线 | 日本高清不卡一区 | 成人羞羞国产免费动态 | 丰腴饱满的极品熟妇 | 苍井空张开腿实干12次 | 18做爰免费视频网站 | 99热热99| 欧美高清一级 | 国产精品乱码一区二区视频 | 东京热一本视频一区 | 揄拍成人国产精品视频 | 欧美性生交xxxxx久久久 | 99精品免费 | 国产伦精品一区二区三区在线 | 韩国一级片在线观看 | 性做久久久久 | 日韩激情综合网 | 亚洲av无码一区东京热久久 | 黄色片在线观看免费 | 美女主播福利视频 | 少妇喷水在线观看 | 在线欧美国产 | 国产日韩欧美激情 | 国产精品一级二级三级 | 嫩草网站入口 | 韩日av网站 | 鲁鲁久久 | 午夜激情亚洲 | 色屁屁 | 国产精品夜夜夜爽张柏芝 | 中日韩免费毛片 | 天堂网av手机版 | 日剧再来一次第十集 | 成人免费视频国产免费网站 | 蜜臀久久精品久久久久 | 欧美性xxxxxx | 欧美日韩亚洲国产 | 精品国产aⅴ | 男人与雌宠物交h | 欧美专区在线 | 欧美日韩亚洲在线 | 色噜噜av | a天堂视频在线观看 | 有奶水的迷人少妇 | 五月天伊人网 | 国产欧美一区二区三区在线老狼 | 在线免费观看av网址 | 欧洲免费毛片 | 91啪国产在线 | 亚洲精品日日夜夜 | 操操影视| 国产看片网站 | 性做爰裸体按摩视频 | 国产裸体无遮挡 | 成人免费毛片xxx | 肉大榛一进一出免费视频 | 日韩 欧美 精品 | 人人艹在线 | 日韩 欧美 国产 综合 | 国产成人黄色 | 国产乱淫av免费 | 久久毛片网 | 羞羞草影院 | 激情网色| 欧美yyy | 人妻少妇久久中文字幕 | 日韩一区二区在线免费观看 | 欧美一级网址 | 欧美激情免费观看 | 天天干天天日 | 五月天在线播放 | 一级在线视频 | 天天干天天做 | 蜜臀一区二区三区 | 日本一二三区在线 | 国产成人久久777777 | 免费观看日韩毛片 | 精品国产视频一区二区三区 | 国产一二| 黄网站免费看 | 国产精品一区二区性色av | 一本色道久久综合亚洲精品按摩 | 欧美人与按摩师xxxx | 婷婷精品在线 | 大屁股白浆一区二区 | 久久久久黄色片 | 777久久久精品一区二区三区 | 日本公妇乱偷中文字幕 | 色婷婷av一区二区三区大白胸 | 色在线影院 | 在线免费观看h片 | 一区二区三区啪啪啪 |