成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server中一個隱性的IO性能殺手

數據庫 SQL Server 數據庫運維
最近在一個客戶那里注意到一個計數器很高(Forwarded Records/Sec),伴隨著間歇性的磁盤等待隊列的波動。本篇文章分享什么是forwarded record,并從原理上談一談為什么Forwarded record會造成額外的IO。

存放原理

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

image

圖1.Forwarded Record示意

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

Forwarded Record如何影響IO性能?

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

  1. CREATE TABLE dbo.HeapTest ( id INT, col1 VARCHAR(800) ) 
  2.  
  3. DECLARE @index INT 
  4. SET @index = 0 
  5. BEGIN TRAN 
  6. WHILE @index < 100000  
  7.     BEGIN  
  8.         INSERT  INTO dbo.HeapTest 
  9.                 ( id, col1 ) 
  10.         VALUES  ( @indexNULL ) 
  11.         SET @index = @index + 1 
  12.  
  13.     END 
  14. COMMIT 

代碼清單1.新建堆表并插入10萬條數據

    通過代碼清單1創建測試表,并循環插入10萬數據。此時我們來看該堆表所占用存儲的頁數,如圖2所示。

image

圖2.堆表空間占用

    此時對該表進行更新,讓原有行增長,產生Forwarded Record,此時再來看該堆表的存儲。如圖3所示。

image

圖3.產生8W+的forwarded record

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

image

圖4.不該產生的額外IO開銷

    而上面查詢反映到性能計數器中,則呈現為如圖5所示的結果。

image

圖5.Forwarded Record計數器增長

如何解決

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

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

    如果由于其他原因無法創建聚集索引,則可以對堆表進行表重建。

原文鏈接:http://www.cnblogs.com/CareySon/p/3829019.html

責任編輯:彭凡 來源: 博客園
相關推薦

2010-09-06 10:38:25

SQL Server語句

2011-05-06 14:19:29

ExcelSQL Server

2010-09-10 15:32:53

SQL函數日期格式化

2010-06-30 10:23:27

SQL Server數

2024-02-22 16:55:13

2010-11-09 15:30:01

Sql server時

2011-05-19 14:40:33

SQL Server

2021-07-24 13:11:19

Redis數據技術

2013-07-30 14:06:30

Google中國殺手

2021-12-13 07:28:33

Java性能字符

2011-08-15 11:24:46

SQL Server事務

2011-08-01 16:10:00

SQL Server

2018-11-22 15:50:27

MySQL數據庫雙引號

2023-11-23 16:46:55

LinuxAWK運維

2017-05-22 08:35:07

MySQL雙引號錯位

2021-02-01 10:42:47

MySQL雙引號數據庫

2009-03-06 09:42:16

性能索引

2010-06-28 09:53:11

SQL Server數

2010-09-13 16:39:36

sql server觸

2023-03-13 00:01:10

數據庫性能MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产91在线 | 亚洲 | 亚洲成人黄色 | 自拍偷拍精品 | 成人亚洲一区 | 亚洲精品片 | 麻豆av免费观看 | 精品久久久久久中文字幕 | 欧美aa在线 | 久久免费精品视频 | 精品综合久久久 | 国产精品a一区二区三区网址 | 91精品国产自产精品男人的天堂 | 亚洲一区二区在线视频 | 中文字幕第100页 | 日韩在线视频网址 | 色橹橹欧美在线观看视频高清 | 一区二区三区久久久 | 国产欧美一区二区在线观看 | 亚洲午夜精品视频 | 狠狠夜夜 | 日本 欧美 国产 | 欧美成人精品一区二区男人看 | 一级黄在线观看 | 人人爱干| 中文字幕免费 | 免费久久99精品国产婷婷六月 | 日本久久久一区二区三区 | 日本精品视频 | 91精品久久久久久久99 | 欧美日韩精品久久久免费观看 | 成人免费一区二区 | 成人av片在线观看 | 在线啊v| 国产欧美一区二区三区在线看 | 日韩一区二区三区在线视频 | 免费一区二区在线观看 | 亚洲精品中文字幕中文字幕 | 神马影院一区二区三区 | 国产日韩免费视频 | 一区二区中文字幕 | 91亚洲一区 |