亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

堆表上的轉發記錄

2024-07-21 02:46:38
字體:
來源:轉載
供稿:網友
堆表上的轉發記錄

今天這篇文章我想談下堆表上特有的性能問題:轉發記錄(Forwarding Records)。首先我們要澄清下什么是堆表:堆表就是沒有聚集索引定義的表。它對插入新記錄非???,但當你讀取數據時非常慢。讀取數據會在你的存儲子系統上引入隨機存?。╮andom I/O),有時候當你碰到轉發記錄,它會進一步降低你的讀取性能。

為什么會有轉發記錄?

當堆表里的記錄需要移動到不同的物理位置時,SQL Server使用轉發記錄。假設你有一個變長列的表,首先你在堆表里插入一些記錄,這個時候你沒有在變長列里存儲任何數據:

 1 -- Create a table to demonstrate forwarding records 2 CREATE TABLE HeapTable 3 ( 4     Col1 INT IDENTITY(1, 1), 5     Col2 CHAR(2000), 6     Col3 VARCHAR(1000) 7 ) 8 GO 9 10 -- Insert 4 records - those will fit into one page11 INSERT INTO HeapTable VALUES12 (13     REPLICATE('1', 2000),14     ''15 ),16 (17     REPLICATE('2', 2000),18     ''19 ),20 (21     REPLICATE('3', 2000),22     ''23 ),24 (25     REPLICATE('4', 2000),26     ''27 )28 GO

當你在變長列執行UPDATE語句時,想象下會發生什么?在那個情況下SQL Server可能需要擴展這個記錄,因為記錄大小更長了,其他記錄必須從同個數據頁移走。

1 -- Let's update the table and expand each row of the table2 UPDATE HeapTable3 SET Col3 = REPLICATE('5', 1000)4 GO

在那個情況下,SQL Server在原始位置留下稱為轉發記錄,它指向記錄最終存儲的新位置。

SQL Server需要使用這個方法來避免更新同個表上所有非聚集索引。你可能知道,當你在堆表上創建非聚集索引時,在葉子層,非聚集索引指向記錄數據存儲的物理位置。沒有抓發記錄的話,所有這些指針都要改變,這會大幅度降低你的性能。

如何修正轉發記錄?

為了找出表里是否包含轉發記錄,你可以使用DMFsys.dm_db_index_physical_stats。當你在堆表上調用這個函數并傳入DETAILED模式,SQL Server通過forwarded_record_count列告訴你表上的轉發記錄數。

 1 -- Check the forwarding record count through sys.dm_db_index_physical_stats 2 SELECT 3     index_type_desc, 4     page_count,  5     avg_page_space_used_in_percent, 6     avg_record_size_in_bytes, 7     forwarded_record_count 8 FROM sys.dm_db_index_physical_stats 9 (10     DB_ID('ALLOCATIONDB'), 11     OBJECT_ID('HeapTable'),12     NULL, 13     NULL, 14     'DETAILED'15 )16 GO

可以看到,表上有2條轉發記錄,在4條記錄之外。為了去掉這些轉發記錄,你可以重建表。

1 -- Rebuild the heap table to get rid of the Forwarding Records2 ALTER TABLE HeapTable REBUILD3 GO

再次運行剛才的查詢,你會發現轉發記錄已經消失。

 1 -- Check the forwarding record count through sys.dm_db_index_physical_stats 2 SELECT 3     index_type_desc, 4     page_count,  5     avg_page_space_used_in_percent, 6     avg_record_size_in_bytes, 7     forwarded_record_count 8 FROM sys.dm_db_index_physical_stats 9 (10     DB_ID('ALLOCATIONDB'), 11     OBJECT_ID('HeapTable'),12     NULL, 13     NULL, 14     'DETAILED'15 )16 GO

DBA總會考慮到索引碎片,索引重建和索引重新組織操作。但沒有人想過堆表里的轉發記錄。如果你維護數據庫,經常檢查下堆表上的轉發記錄數,保證始終有最好的性能,這是個非常好的想法。

小結

在這個文章里你看到了堆表上轉發記錄是咋樣,它是如何降低的記錄讀取,因為需要額外的邏輯讀。當我為數據庫進行健康檢查時,我在檢查堆表時,總會看下轉發記錄數。

相信我:數據庫里會有巨大數量的堆表,在生產系統里也會有很多轉發記錄,但DBA們并沒意識到這個副作用。作為第一經驗,我經常推薦在表上建立聚集索引來避免轉發記錄。當然在一些特定場景里,例如最后頁插入加鎖競爭(Last Page Insert Latch Contention),在這里你可以使用堆表來避免這個問題,但大多數情況下,在表上建立聚集索引還是非常有用的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品免费久久久久久久久| 91精品91久久久久久| 国产成人一区二| 亚洲一区二区三区xxx视频| 久久久999成人| 亚洲欧美中文字幕在线一区| 久久精品国产69国产精品亚洲| 亚洲国产欧美一区二区三区久久| 久久久久久久久久久人体| 欧美黑人一级爽快片淫片高清| 欧美成在线视频| 亚洲国产成人久久综合一区| 亚洲精品成人av| 欧美精品在线极品| 正在播放亚洲1区| 久久久久久国产精品美女| 91成人免费观看网站| 在线播放国产一区中文字幕剧情欧美| 亚洲精品日韩激情在线电影| 亚洲一区二区久久久久久| 97欧美精品一区二区三区| 欧美日韩精品国产| 欧美成人免费一级人片100| 国产亚洲欧美视频| 久久视频在线视频| 成人国产精品久久久| 久久久久国产精品免费| 中文字幕成人精品久久不卡| 国产精品久久久久久久久男| 欧美在线精品免播放器视频| 日本在线观看天堂男亚洲| 国产v综合ⅴ日韩v欧美大片| 91精品国产色综合| 国产成人aa精品一区在线播放| 日韩欧美精品在线观看| 77777亚洲午夜久久多人| 欧美视频精品一区| 一本一本久久a久久精品牛牛影视| 欧美极品少妇xxxxx| 亚洲美女精品久久| 亚洲欧美综合v| 欧美www视频在线观看| 久久亚洲一区二区三区四区五区高| 日韩美女中文字幕| 欧美精品日韩www.p站| 在线看福利67194| 福利视频一区二区| 国产精品xxx视频| 91精品久久久久久久久久入口| 91中文字幕在线| 91九色在线视频| 主播福利视频一区| 热门国产精品亚洲第一区在线| 国产又爽又黄的激情精品视频| 亚洲国语精品自产拍在线观看| 欧美激情成人在线视频| 久久精品一本久久99精品| 午夜精品久久久久久99热软件| 在线播放日韩欧美| 一区二区在线视频播放| 国产精品视频999| 亚洲精品日韩欧美| 亚洲wwwav| 国产在线久久久| 亚洲欧洲黄色网| 欧美成人亚洲成人日韩成人| 欧美成人免费全部观看天天性色| 精品一区二区电影| 黄色精品一区二区| 精品久久久久久久大神国产| 久久久噜久噜久久综合| 亚洲国产精品福利| 少妇久久久久久| 中文字幕少妇一区二区三区| 欧美午夜性色大片在线观看| 欧美日韩午夜激情| 中文字幕日韩综合av| 久久久伊人欧美| 91精品国产综合久久男男| 国产精品看片资源| 成人免费视频网址| 九九九久久久久久| 亚洲一品av免费观看| 久久成人免费视频| 国内精品一区二区三区| 欧美特黄级在线| 久久久人成影片一区二区三区观看| 欧美高清自拍一区| 青草成人免费视频| 成人精品aaaa网站| 精品国产乱码久久久久久婷婷| 国产精品视频男人的天堂| 91精品国产亚洲| 97超碰蝌蚪网人人做人人爽| 最近日韩中文字幕中文| 久久99精品视频一区97| 国产va免费精品高清在线| 国产精品久久精品| 欧美日本啪啪无遮挡网站| 日韩电视剧在线观看免费网站| 日韩中文字幕国产精品| 欧美另类xxx| 亚洲综合一区二区不卡| 中文字幕欧美亚洲| 亚洲电影av在线| 久久亚洲精品视频| 午夜精品久久久久久久久久久久| 精品国产户外野外| 久久九九免费视频| 欧美激情在线观看视频| 日韩久久精品电影| 色综合久久88色综合天天看泰| 国产午夜精品全部视频在线播放| 久久久91精品国产一区不卡| 精品少妇一区二区30p| 国产亚洲一区二区精品| 成人网在线观看| 久久精品成人一区二区三区| 日韩中文字幕在线视频| 久久久精品久久| 久久久久久久久久久久久久久久久久av| 国产精品第2页| 成人有码视频在线播放| 欧美肥老太性生活视频| 国产日韩在线视频| 91色在线观看| 欧美丝袜一区二区三区| 亚洲高清一区二| 欧美性猛交xxxx黑人| 亚洲天堂久久av| 日韩69视频在线观看| 日韩有码视频在线| 国产精品视频yy9099| 国产一区二区三区在线视频| 亚洲欧洲激情在线| 亚洲国产欧美日韩精品| 国产精品吹潮在线观看| 欧美日韩一区二区在线播放| 中文字幕精品www乱入免费视频| 欧美性视频精品| 国产男女猛烈无遮挡91| 亚洲国产精品国自产拍av秋霞| 国产亚洲欧美另类中文| 日韩精品极品视频| 91久久久亚洲精品| 欧美最猛黑人xxxx黑人猛叫黄| 日韩av黄色在线观看| 一区二区三区www| 一本色道久久88综合日韩精品| 色诱女教师一区二区三区| 精品国产一区二区三区久久狼黑人| 欧美成人在线免费| 九九热这里只有精品免费看| 日韩久久免费视频| 综合久久五月天| 国产一区二区av| 亚洲精品国产精品国自产观看浪潮| 日韩免费看的电影电视剧大全| 精品久久久久久国产| 深夜福利亚洲导航| 3344国产精品免费看| 97色伦亚洲国产| 91黄色8090| 亚洲国产精品一区二区久|