解讀SQL Server小知識:Processor Affinity_Mssql數(shù)據(jù)庫教程
推薦:看Sql server 2005 找出子表樹同事在準(zhǔn)備新老系統(tǒng)的切換,清空一個表的時候往往發(fā)現(xiàn)這個表的主鍵被另一個表用做外鍵,而系統(tǒng)里有太多層次的引用.所以清起來相當(dāng)麻煩 用下面這個腳本可以做到找出一個特定表的引用
SQL Server通常都運行在多處理器的服務(wù)器上,這一點在現(xiàn)在尤為普遍。原因是多內(nèi)核的處理器越來越普及。那么,在多處理器環(huán)境下,Windows操作系統(tǒng)(事實上是從2000開始的)通常都會將進程任務(wù)放在一個隊伍里面,然后讓這些處理任務(wù)依次去占有處理器進行計算。
這樣做的好處就是每個計算任務(wù)都可以獲得近似于平均的處理資源,盡管無法保證一個處理任務(wù)每次都能拿到同一個處理器。這就像嘉年華我們重復(fù)排隊參加一個刺激的項目(比如說自由落體,事實上我從來不參加這種項目),每個人上去一輪,并不能保證每次都能做同一張位置。
不過回到SQL Server上面來,SQL Server可不喜歡這樣的處理機制。
大家可能都知道處理器中有個東西叫片內(nèi)緩存,片內(nèi)緩存有1級、2級、3級之分。
我們假設(shè)處理器要計算A、B、C三個任務(wù),處理器先運算A任務(wù),A任務(wù)還沒有結(jié)束的時候它的游戲時間就結(jié)束了,因此處理器在接受B的時候會將計算B所需的數(shù)據(jù)加載到1級片內(nèi)緩存中,而將A任務(wù)(我們假設(shè)處理器還沒有完成它的計算任務(wù))的數(shù)據(jù)挪到2級片內(nèi)緩存中,或者3級。
當(dāng)那個A任務(wù)回來的計算的時候,處理器會從2級片內(nèi)緩存中恢復(fù)計算所需的數(shù)據(jù),當(dāng)然這要取決于是不是那些數(shù)據(jù)還在2級緩存中,因為有很多因素可以讓它不在那兒,比如說A任務(wù)回來的時候發(fā)現(xiàn)接待它的已經(jīng)不是原來那個處理器了,當(dāng)然A任務(wù)就不能指望面前這個處理器有它的計算數(shù)據(jù)了(當(dāng)然計算A任務(wù)回到同一顆處理器,也可能因為其他任務(wù)占用了這個處理器的2級片內(nèi)緩存而導(dǎo)致它原來存入的數(shù)據(jù)被替換掉了)。
如果處理器發(fā)現(xiàn)A任務(wù)數(shù)據(jù)還在2級片內(nèi)緩存中,操作系統(tǒng)就認(rèn)為這次命中了2級緩存,如果不在了,就說這次沒有命中2級緩存。因此我們可以知道操作系統(tǒng)是非常渴望每次都命中2級緩存的,因為這樣就可以節(jié)省不少時間重新從內(nèi)存中將數(shù)據(jù)加載到片內(nèi)緩存中。
大多數(shù)操作系統(tǒng)要面對的任務(wù)都不會有太多的計算數(shù)據(jù),因此這些任務(wù)不需要太多關(guān)心片內(nèi)緩存的問題。同時多數(shù)低端的服務(wù)器也沒有很大的片內(nèi)緩存,因此它們也不太關(guān)心這個問題。不過對于運行在有較大片內(nèi)緩存的服務(wù)器上的SQL Server來說,這個問題就要嚴(yán)肅一些了。
在中高端的PC服務(wù)器(為什么說是PC服務(wù)器呢,因為Windows現(xiàn)在還可以運行在一些廠商的小型機平臺上,例如HP的SuperDome)中,通常單個處理器的片內(nèi)緩存都在2M-4M,而且這些服務(wù)器可以擁有8個甚至更多一些的處理器,同時SQL Server的計算任務(wù)都是依賴于大量數(shù)據(jù)的,因此SQL Server的一個任務(wù)可不希望它重新拿回處理器的時候發(fā)現(xiàn)自己的數(shù)據(jù)不在了。
為了解決這個問題,SQL Server就有了這個處理器親和度(Processor Affinity)的配置項,啟用這個選項后,SQL Server中的任務(wù)就會記著自己原來在那個處理器上工作的,當(dāng)它們再次有機會回到處理器工作的時候它們會認(rèn)準(zhǔn)回家的路——只用原來的那顆處理器。(事實上這個過程要復(fù)雜一些,有興趣的朋友可以進一步了解SQL Server中調(diào)度這個概念)。
分享:解讀動態(tài)SQL語句的編程動態(tài)SQL語句中的參數(shù),我們可以通過兩種途徑來為它賦值: 1. 利用參數(shù)編輯器(Parameter Editor)來為參數(shù)賦值 具體方法是:選中TQuery部件,單擊鼠標(biāo)右鍵,然后從中選擇Define Pa
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 關(guān)于sql server批量插入和更新的兩種解決方案
- 淺談SQL Server元數(shù)據(jù)的管理與應(yīng)用
- 看看自己掌握了多少SQL快捷鍵
- 如何巧妙規(guī)劃使用Oracle數(shù)據(jù)空間
- 基于SQL Server中如何比較兩個表的各組數(shù)據(jù) 圖解說明
- 關(guān)于避免在 PL/SQL 中使用嵌套游標(biāo)查詢
- 怎樣合理設(shè)置內(nèi)存讓數(shù)據(jù)庫與其他程序共存
- SQL SERVER 2008 CTE生成結(jié)點的FullPath
- 如何有效防止Java程序源碼被人偷窺?
- SQL Server 2012 安裝圖解教程(附sql2012下載地址)
猜你也喜歡看這些
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-解讀SQL Server小知識:Processor Affinity
。