最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server中的Forwarded Record計(jì)數(shù)器影響IO性能的解決方法

 更新時(shí)間:2014年07月07日 11:32:06   投稿:junjie  
這篇文章主要介紹了SQL Server中的Forwarded Record計(jì)數(shù)器影響IO性能的解決方法,需要的朋友可以參考下

一、簡介 

    最近在一個(gè)客戶那里注意到一個(gè)計(jì)數(shù)器很高(Forwarded Records/Sec),伴隨著間歇性的磁盤等待隊(duì)列的波動(dòng)。本篇文章分享什么是forwarded record,并從原理上談一談為什么Forwarded record會(huì)造成額外的IO。

二、存放原理

    在SQL Server中,當(dāng)數(shù)據(jù)是以堆的形式存放時(shí),數(shù)據(jù)是無序的,所有非聚集索引的指針存放指向物理地址的RID。當(dāng)數(shù)據(jù)行中的變長列增長使得原有頁無法容納下數(shù)據(jù)行時(shí),數(shù)據(jù)將會(huì)移動(dòng)到新的頁中,并在原位置留下一個(gè)指向新頁的指針,這么做的原因是由于使得當(dāng)出現(xiàn)對Record的更新時(shí),所有非聚集索引的指針不用變動(dòng)。如圖1所示。

image

圖1.Forwarded Record示意

這種由于數(shù)據(jù)更新,只在原有位置留下指針指向新數(shù)據(jù)頁存放位置行,就是所謂的Forwarded Record。

三、 Forwarded Record如何影響IO性能? 

 那么Forwarded Record既然是為了提升性能存在的機(jī)制,為什么又會(huì)引起性能問題?Forwarded Record的初衷是為了對堆表進(jìn)行更新時(shí),堆表上存儲(chǔ)位置的變化不會(huì)同時(shí)更新非聚集索引而產(chǎn)生開銷。但對于查找來說,無論是堆表上存在表掃描,還是用于書簽查找,都會(huì)成倍帶來額外的IO開銷,下面看一個(gè)例子。

BEGIN TRAN
WHILE @index < 100000 
  BEGIN 
    INSERT INTO dbo.HeapTest
        ( id, col1 )
    VALUES ( @index, NULL )
    SET @index = @index + 1

  END
COMMIT

代碼清單1.新建堆表并插入10萬條數(shù)據(jù)

通過代碼清單1創(chuàng)建測試表,并循環(huán)插入10萬數(shù)據(jù)。此時(shí)我們來看該堆表所占用存儲(chǔ)的頁數(shù),如圖2所示。

圖2.堆表空間占用

此時(shí)對該表進(jìn)行更新,讓原有行增長,產(chǎn)生Forwarded Record,此時(shí)再來看該堆表的存儲(chǔ)。如圖3所示。

圖3.產(chǎn)生8W+的forwarded record

此時(shí)我們注意到,雖然數(shù)據(jù)僅僅占到590頁,但存在8W+的forwarded record,如果我們對該表進(jìn)行掃描,則會(huì)看到雖然僅僅只有590頁,但需要8W+的邏輯IO,大大提升了對IO的開銷壓力,此外由于forwarded record頁與原頁往往不物理連續(xù),因此對IOPS也存在挑戰(zhàn)。如圖4所示。

圖4.不該產(chǎn)生的額外IO開銷

而上面查詢反映到性能計(jì)數(shù)器中,則呈現(xiàn)為如圖5所示的結(jié)果。

圖5.Forwarded Record計(jì)數(shù)器增長

 四、如何解決

看到Forwarded Record計(jì)數(shù)器,就說明數(shù)據(jù)庫中存在堆表,在OLTP系統(tǒng)中,所有的表上都應(yīng)該有聚集索引。因此可以通過在表上增加聚集索引來解決該問題。

    通常來講,只有只寫不讀的表設(shè)置為堆表比較合適,但如果看到存在Forwarded Reocord,則說明堆表上存在讀操作,那么找到該堆表,找一個(gè)合適的維護(hù)窗口時(shí)間創(chuàng)建堆表則是比較理想的選擇。

    如果由于其他原因無法創(chuàng)建聚集索引,則可以對堆表進(jìn)行表重建。

相關(guān)文章

  • SQL?Server中鎖的用法

    SQL?Server中鎖的用法

    這篇文章介紹了SQL?Server中鎖的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Navicat導(dǎo)出.sql文件方法

    Navicat導(dǎo)出.sql文件方法

    這篇文章主要介紹了Navicat導(dǎo)出.sql文件方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • SQL Server使用T-SQL創(chuàng)建數(shù)據(jù)庫的操作指南

    SQL Server使用T-SQL創(chuàng)建數(shù)據(jù)庫的操作指南

    ?T-SQL全稱為transact structured query language,事務(wù)化的結(jié)構(gòu)查詢語言,是對標(biāo)準(zhǔn)SQL語言功能的擴(kuò)充,可以聲明變量,有流程控制語句,支持對流程的控制等,本文給大家介紹了SQL Server使用T-SQL創(chuàng)建數(shù)據(jù)庫的操作指南,需要的朋友可以參考下
    2024-12-12
  • 詳解SQL游標(biāo)的用法

    詳解SQL游標(biāo)的用法

    這篇文章主要介紹了SQL游標(biāo)的用法,文中講解非常詳細(xì),配合代碼幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 將Excel數(shù)據(jù)導(dǎo)入到SQL?Server數(shù)據(jù)庫的操作指南

    將Excel數(shù)據(jù)導(dǎo)入到SQL?Server數(shù)據(jù)庫的操作指南

    這篇文章主要介紹了將Excel數(shù)據(jù)導(dǎo)入到SQL?Server數(shù)據(jù)庫的操作指南,文中通過圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • sql?server?數(shù)據(jù)庫鎖教程及鎖操作方法

    sql?server?數(shù)據(jù)庫鎖教程及鎖操作方法

    SQL?Server數(shù)據(jù)庫鎖機(jī)制是保證并發(fā)性和數(shù)據(jù)一致性的關(guān)鍵,它通過不同級別的鎖和鎖類型(共享、排他、更新等)來管理資源訪問,了解和正確使用鎖機(jī)制,可以幫助開發(fā)者設(shè)計(jì)高效、并發(fā)性強(qiáng)的數(shù)據(jù)庫應(yīng)用,本文介紹sql?server?數(shù)據(jù)庫鎖教程及鎖操作,感興趣的朋友一起看看吧
    2025-02-02
  • sqlserver Case函數(shù)應(yīng)用介紹

    sqlserver Case函數(shù)應(yīng)用介紹

    Case具有兩種格式。簡單Case函數(shù)和Case搜索函數(shù)。
    2011-04-04
  • SQL中的CASE WHEN用法小結(jié)

    SQL中的CASE WHEN用法小結(jié)

    文章詳細(xì)介紹了SQL中的CASEWHEN函數(shù)及其用法,包括簡單CASEWHEN和CASEWHEN條件表達(dá)式兩種形式,并通過多個(gè)實(shí)際場景展示了如何使用CASEWHEN進(jìn)行數(shù)據(jù)判斷和條件統(tǒng)計(jì),感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 解密新型SQL Server無文件持久化惡意程序的問題

    解密新型SQL Server無文件持久化惡意程序的問題

    這篇文章主要介紹了解密新型SQL Server無文件持久化惡意程序的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner

    更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner

    更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner...
    2007-02-02

最新評論

东明县| 漳浦县| 酉阳| 神池县| 固安县| 阿勒泰市| 清河县| 伊宁县| 固安县| 南汇区| 北辰区| 启东市| 阳信县| 阿图什市| 榆社县| 龙江县| 治县。| 梁平县| 呼图壁县| 宁晋县| 综艺| 鄂尔多斯市| 托克逊县| 泊头市| 巴楚县| 塔城市| 兰坪| 赣榆县| 呈贡县| 铜川市| 雷州市| 荔波县| 石城县| 睢宁县| 尼玛县| 安丘市| 大关县| 建水县| 瓦房店市| 昌图县| 保靖县|