<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      硬盤的原理以及SQL Server如何利用硬盤原理減少IO

      簡介

          硬盤作為現在計算機內部最后的機械存儲部件,速度相比較內存和Cache而言會慢好幾個數量級。但所幸的是,硬盤的成本是遠遠低于內存的。因此硬盤作為永久存儲器是比較合適的,所幸的是為了克服硬盤慢速帶來的問題,操作系統會對硬盤的使用有一個優化,下面讓我們先來看硬盤的原理。

       

      硬盤的原理簡介

          一個典型的硬盤如圖1所示。

          2

          圖1.一個典型的硬盤

       

          由圖1可以看到,硬盤上磁盤進行高速旋轉,磁頭臂在磁盤上來回移動進行數據的讀取和寫入。這也是為什么我們說硬盤是一個機械部件的原因。通過圖2我們可以更抽象的來看磁盤讀取數據的方式。磁盤由圓心向外被劃分為多個磁道,所謂擺臂在磁道上來回移動也就是擺臂在磁道間的來回移動,

          1

          圖2.更抽象的硬盤原理

       

          除了磁道之外,一個磁道還會被劃分為多個扇區,如圖3所示。

          3

          圖3.磁道,扇區和簇

       

          我們可以看到,扇區是硬盤尋址的最小單位,但實際上分配空間時最小的單位是簇(Clusters)。這也就是為什么硬盤上文件的實際大小和占用空間不同的原因。

       

      磁盤讀寫數據所花費的時間

          在了解了硬盤的基本原理之后,不難推算出,磁盤上數據讀取和寫入所花費的時間可以分為三個部分。

          1.尋道時間

           所謂尋道時間,其實就是磁臂移動到指定磁道所需要的時間,這部分時間又可以分為兩部分:

           尋道時間=啟動磁臂的時間+常數*所需移動的磁道數

       

           其中常數和驅動器的的硬件相關,啟動磁臂的時間也和驅動器的硬件相關

       

          2.旋轉延遲

          旋轉延遲指的是把扇區移動到磁頭下面的時間。這個時間和驅動器的轉數有關,我們通常所說的7200轉的硬盤的轉就是這個。

          平均旋轉延遲=1/(2*轉數每秒)

       

           比如7200轉的硬盤的平均旋轉延遲等于1/2*120≈4.17ms

           旋轉延遲只和硬件有關。

       

          3.傳輸時間

           傳輸時間指的是從磁盤讀出或將數據寫入磁盤的時間。

           這個時間等于:所需要讀寫的字節數/每秒轉速*每扇區的字節數

       

      磁盤調度算法

          通過上面硬盤讀寫數據所分的三部分時間不難看出,大部分參數是和硬件相關的,操作系統無力優化。只有所需移動的磁道數是可以通過操作系統來進行控制的,所以減少所需移動的磁道數是減少整個硬盤的讀寫時間的唯一辦法。

          因為操作系統內可能會有很多進程需要調用磁盤進行讀寫,因此合理的安排磁頭的移動以減少尋道時間就是磁盤調度算法的目的所在,幾種常見的磁盤調度算法如下。

         1.先來先服務算法(FCFS)

            這種算法將對磁盤的IO請求進行排隊,按照先后順序依次調度磁頭。這種算法的特點是簡單,合理,但沒有減少尋道時間

       

          2.最短尋道時間算法(SSFT)

           這種算法優先執行所需讀寫的磁道離當前磁頭最近的請求。這保證了平均尋道時間的最短,但缺點顯而易見:離當前磁頭比較遠的尋道請求有可能一直得不到執行,這也就是所謂的“饑餓現象”。

          3.掃描算法(SCAN)

           這種算法在磁頭的移動方向上選擇離當前磁頭所在磁道最近的請求作為下一次服務對象,這種改進有效避免了饑餓現象,并且減少了尋道時間。但缺點依然存在,那就是不利于最遠一端的磁道訪問請求。

          3.循環掃描算法(CSCAN)

           也就是俗稱的電梯算法,這種算法是對最短尋道時間算法的改進。這種算法就像電梯一樣,只能從1樓上到15樓,然后再從15樓下到1樓。這種算法的磁頭調度也是如此,磁頭只能從最里磁道到磁盤最外層磁道。然后再由最外層磁道移動到最里層磁道,磁頭是單向移動的,在此基礎上,才執行和最短尋道時間算法一樣的,離當前磁頭最近的尋道請求。這種算法改善了SCAN算法,消除了對兩端磁道請求的不公平。

       

      其它優化手段以及SQL Server是如何利用這些手段

          除去上面通過磁盤調度算法來減少尋道時間之外。還有一些其它的手段同樣可以利用,在開始之前,我首先想講一下局部性原理。

       

      局部性原理

          所謂的局部性原理分為時間和空間上的。由于程序是順序執行的,因此當前數據段附近的數據有可能在接下來的時間被訪問到。這就是所謂的空間局部性。而程序中還存在著循環,因此當前被訪問的數據有可能在短時間內被再次訪問,這就是所謂的時間局部性原理。

       

           因此在了解了局部性原理之后,我們可以通過以下幾個手段來減少磁盤的IO。

       

      提前讀(Read-Ahead)

           提前讀也被稱為預讀。根據磁盤原理我們不難看出,在磁盤讀取數據的過程中,真正讀取數據的時間只占了很小一部分,而大部分時間花在了旋轉延遲和尋道時間上,因此根據空間局部性原理,SQL Server每次讀取數據的時間不僅僅讀取所需要的數據,還將所請求數據附近的數據進行讀取。這在SQL Server中被稱為預讀。SQL Server通過預讀可以有效的減少IO請求。

       

      延遲寫(Delayed write)

           同樣,根據時間局部性原理,最近被訪問的數據有可能再次被訪問,因此當數據更改之后不馬上寫回磁盤,而是繼續放在內存中,以備接下來的請求讀取或者修改,是減少磁盤IO的另一個有效手段,在SQL Server中,實現延遲寫是buffer pool,當一個修改請求被commit之后,并不會立刻寫回磁盤,而是將修改的頁標記為“臟”,然后根據某種機制通過checkpoint或lazy writer寫回磁盤,關于checkpoint和lazy writer的原理,可以參考我之前的文章:淺談SQL Server中的事務日志(二)----事務日志在修改數據時的角色.

       

      優化物理分布

           根據磁盤原理不難看出,如果所請求的數據在磁盤物理磁道之間是連續的,那么會減少磁頭的移動距離,從而減少了尋道時間。因此相關的數據放在連續的物理空間上會減少尋道時間。SQL Server中,通過聚集索引使得數據根據主鍵在物理磁盤上連續,從而減少了尋道時間。

       

      總結

          本文談了硬盤的原理,讀寫數據所花費的時間以及如何減少讀寫數據所花的時間,并且簡單概述了SQL Server是如何利用這些特性減少IO的占用。理解磁盤的原理是進行性能調優的基礎之一。

       

      本文PDF版本可以點擊這里下載。

      posted @ 2012-08-20 09:01  CareySon  閱讀(11249)  評論(23)    收藏  舉報
      主站蜘蛛池模板: 国产精品美女久久久久久麻豆| 免费看无码自慰一区二区| 人妻系列无码专区69影院| 亚洲av精彩一区二区| 日韩精品一区二区三区激情视频| 婷婷六月色| 国产人妻人伦精品婷婷| 日日噜噜大屁股熟妇| 国产精品中文av专线| 欧美一区二区三区久久综合| 亚洲日本一区二区三区在线播放 | 亚洲无人区视频在线观看| 中国亚州女人69内射少妇| 毛片内射久久久一区| 国产精品第一页一区二区| 国产午夜福利在线视频| 国产色视频网站免费| 搡老熟女老女人一区二区| 国产国产成人精品久久蜜| 日韩激情无码av一区二区| 免费无码高H视频在线观看| 国产成人高清亚洲综合| 无码精品人妻一区二区三区湄公河| 亚洲精品自产拍在线观看动漫| 国产成人无码AV大片大片在线观看| 女人18片毛片60分钟| 久久美女夜夜骚骚免费视频| 免费AV片在线观看网址| 徐汇区| 成人精品视频一区二区三区| 四虎成人精品永久网站| 西青区| 久久亚洲中文无码咪咪爱| 激情 自拍 另类 亚洲| 亚洲成色精品一二三区| 欧美成人黄在线观看| 久久精品国产99久久无毒不卡| 日本一区二区三区在线 |观看| 国产午夜三级一区二区三| 亚洲国产激情一区二区三区| 国产精品中文第一字幕|