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

SQL Server誤區(qū)30日談 第12天 TempDB的文件數(shù)和需要和CPU數(shù)目保持一致

 更新時(shí)間:2013年01月09日 19:56:03   作者:  
TempDB的文件沒有必要分布在多個(gè)存儲(chǔ)器之間。如果你看到PAGELATCH類型的等待,即使你進(jìn)行了分布也不會(huì)改善性能,而如果PAGEIOLATCH型的等待,或許你需要多個(gè)存儲(chǔ)器,但這也不是必然-有可能你需要講整個(gè)TempDB遷移到另一個(gè)存儲(chǔ)系統(tǒng),而不是僅僅為TempDB增加一個(gè)文件

誤區(qū) #12:TempDB的文件數(shù)和需要和CPU數(shù)目保持一致

錯(cuò)誤

    哎,由于上述誤區(qū)是微軟“官方”的建議,并且還有大量博文堅(jiān)持這個(gè)觀點(diǎn),這個(gè)誤區(qū)已經(jīng)是老生常談。

    但讓人困惑的是SQL CAT團(tuán)隊(duì)給出的建議就是1:1,但這個(gè)建議是源自擴(kuò)展方面的原理來說,而不是一個(gè)通用法則。因?yàn)樗麄兯鎸?duì)的大型客戶數(shù)據(jù)量服務(wù)器和IO子系統(tǒng)都是大部分人沒有機(jī)會(huì)遇到的。

    每個(gè)實(shí)例僅僅允許有一個(gè)TempDb,但需要用到TempDB的地方卻有很多,所以TempDB很容易成為性能瓶頸,我想大家數(shù)人都了解這一點(diǎn),而大多數(shù)人所不了解的應(yīng)該是在什么情況下才需要額外的TempDB文件。

    當(dāng)你看到PAGELATCH類型的阻塞時(shí),說明遇到內(nèi)存中分配位圖的爭(zhēng)用問題了。而看到PAGEIOLATCH,說明遇到I/O子系統(tǒng)層面的爭(zhēng)用問題了。對(duì)于閂鎖(Latch)你可以將其看作和普通鎖是一種東西,但更輕量,更短,并且只會(huì)被存儲(chǔ)引擎內(nèi)部使用。

    MVP Glenn Berry 有一篇博文里有查看sys.dm_os_wait_stats的DMV。這篇博文中可以查到你的服務(wù)器造成阻塞最多的原因是什么。如果你發(fā)現(xiàn)是PAGELATCH型等待,你可以使用這段腳本來查看是由于FPS,GAM還是SGAM爭(zhēng)用造成的問題。

    如果你遇到閂鎖爭(zhēng)用,可以通過跟蹤標(biāo)記1118或是多建一個(gè)TempDB文件來緩和這個(gè)狀況(原理可以在知識(shí)庫KB 328551查到),我已經(jīng)寫了一篇關(guān)于為什么追蹤標(biāo)記1118依然被需要的長(zhǎng)博文,鏈接:Misconceptions around TF 1118。

    在SQL SERVER 2000時(shí)代,TempDB的文件數(shù)需要和CPU核數(shù)保持1:1的關(guān)系,在SQL SERVER 2005和2008版本這條建議也適用,但由于SQL SERVER 2005+后的優(yōu)化措施(詳細(xì)請(qǐng)看我的博文),你不再需要嚴(yán)格按照1:1的比例關(guān)系設(shè)置CPU核數(shù)和TempDB文件數(shù),而是文件數(shù)和CPU核數(shù)的比例保持在1:2或是1:4就行了。

    [題外話:在SQL PASS 2011我的好朋友Bob Ward,也是SQL CSS最牛的人。給出了一個(gè)新的公式:如果CPU核數(shù)小于等于8,使其比例保持在1:1,而如果CPU核數(shù)大于8,使用8個(gè)文件,當(dāng)你發(fā)現(xiàn)閂鎖爭(zhēng)用現(xiàn)象時(shí),每次額外加4個(gè)文件]

    不過這也不能一概而論。上周我遇到一個(gè)問題,一個(gè)客戶的TempDB負(fù)載大到需要32個(gè)CPU配上64個(gè)TempDB文件才能減輕閂鎖爭(zhēng)用。這是否意味著這是一個(gè)最佳實(shí)踐呢?當(dāng)然不是。

    那你或許有疑問,為什么1:1的比例不好呢,那是因?yàn)樘嗟腡empDB有可能引起另一個(gè)性能問題。如果你的一條查詢中某些操作(比如排序)需要使用大量的內(nèi)存,但內(nèi)存不夠時(shí),就需要將這些內(nèi)容分配到TempDB中。當(dāng)存在多個(gè)TempDB文件時(shí),由于TempDB的循環(huán)分配機(jī)制,這有可能導(dǎo)致性能被拖累,對(duì)于比較大的臨時(shí)表也是如此。

    那為什么循環(huán)分配機(jī)制對(duì)于TempDB存在大量文件時(shí)產(chǎn)生性能問題呢?有如下幾種可能:

  •     循環(huán)分配算法是針對(duì)文件組而言,而對(duì)于TempDB只能存在一個(gè)文件組。當(dāng)這個(gè)文件組包含16或32個(gè)文件時(shí),由于循環(huán)分配算法的線程有限,但對(duì)于大量文件的TempDB依然需要做一些額外的同步工作,因此這部分工作會(huì)造成性能損失
  •     TempDB的文件大小不一致,則有可能導(dǎo)致某個(gè)單獨(dú)文件的自動(dòng)增長(zhǎng),從而造成熱點(diǎn)IO。
  •     當(dāng)緩沖區(qū)需要通過LazyWriter釋放一些空間時(shí)(TempDB的Checkpoint不會(huì)做寫回操作),多個(gè)TempDB文件有可能導(dǎo)致IO子系統(tǒng)的隨機(jī)讀寫問題,這會(huì)導(dǎo)致IO方面的性能問題。   

    所以這個(gè)選擇讓你進(jìn)亦憂,退亦憂。到底多少TempDB文件才是合適的呢?我也不能給你具體答案,但是基于我多年咨詢經(jīng)驗(yàn)以及出席各種大會(huì)的經(jīng)驗(yàn),我可以給你一個(gè)指導(dǎo)方針---當(dāng)為了解決閂鎖爭(zhēng)用時(shí)為TempDB創(chuàng)建多個(gè)文件要小心,僅僅在必須情況下才額外增加TempDB文件。也就是你需要在可擴(kuò)展性和性能之間取得一個(gè)平衡。

    希望上面的指導(dǎo)方針對(duì)你有幫助。

    PS:回應(yīng)一些評(píng)論:TempDB的文件沒有必要分布在多個(gè)存儲(chǔ)器之間。如果你看到PAGELATCH類型的等待,即使你進(jìn)行了分布也不會(huì)改善性能,而如果PAGEIOLATCH型的等待,或許你需要多個(gè)存儲(chǔ)器,但這也不是必然-有可能你需要講整個(gè)TempDB遷移到另一個(gè)存儲(chǔ)系統(tǒng),而不是僅僅為TempDB增加一個(gè)文件。這需要你仔細(xì)分析后再做定奪。

相關(guān)文章

  • 使用SQL語句創(chuàng)建數(shù)據(jù)庫與創(chuàng)建表操作指南

    使用SQL語句創(chuàng)建數(shù)據(jù)庫與創(chuàng)建表操作指南

    這篇文章主要給大家介紹了關(guān)于使用SQL語句創(chuàng)建數(shù)據(jù)庫與創(chuàng)建表操作的相關(guān)資料,創(chuàng)建數(shù)據(jù)庫是數(shù)據(jù)庫管理的第一步,而SQL語句是創(chuàng)建數(shù)據(jù)庫的基本工具,需要的朋友可以參考下
    2023-08-08
  • 如何優(yōu)化SQL語句(全)

    如何優(yōu)化SQL語句(全)

    這篇文章主要介紹了如何優(yōu)化SQL語句(全),作為一名程序猿會(huì)寫SQL語句是最基本的要求,但是如何寫出性能比較高的SQL語句呢,下面小編給大家整理供大家參考,需要的朋友可以參考下
    2015-07-07
  • sql server學(xué)習(xí)基礎(chǔ)之內(nèi)存初探

    sql server學(xué)習(xí)基礎(chǔ)之內(nèi)存初探

    這篇文章主要給大家介紹了關(guān)于sql server中內(nèi)存的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者理解sql server具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • SQL SELECT 語句的表連接

    SQL SELECT 語句的表連接

    為了從兩個(gè)或多個(gè)表中選出數(shù)據(jù),我們一般使用表連接來實(shí)現(xiàn)這個(gè)功能。
    2010-09-09
  • win11安裝sqlserver失敗的詳細(xì)解決方案

    win11安裝sqlserver失敗的詳細(xì)解決方案

    這篇文章主要給大家介紹了關(guān)于win11安裝sqlserver失敗的詳細(xì)解決方案,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者SqlServer具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 你真的了解觸發(fā)器么 數(shù)據(jù)實(shí)時(shí)同步更新問題剖析

    你真的了解觸發(fā)器么 數(shù)據(jù)實(shí)時(shí)同步更新問題剖析

    觸發(fā)器就是我們想要的神器了。我們可以在那張動(dòng)態(tài)表上新建觸發(fā)器。觸發(fā)器的實(shí)質(zhì)就是個(gè)存儲(chǔ)過程,只不過他調(diào)用的時(shí)間是根據(jù)所建的動(dòng)態(tài)表發(fā)生該表而執(zhí)行(即:Insert新數(shù)據(jù),Update或者Delete數(shù)據(jù))具體怎么使用觸發(fā)器,今天我這里就不介紹了
    2013-01-01
  • SQL中Merge用法詳解

    SQL中Merge用法詳解

    Merge關(guān)鍵字是一個(gè)神奇的DML關(guān)鍵字。它在SQL Server 2008被引入,它能將Insert,Update,Delete簡(jiǎn)單的并為一句,本文給大家重點(diǎn)介紹sql中merge用法,需要的朋友一起了解下吧
    2015-09-09
  • sql數(shù)據(jù)庫不能直接用instr函數(shù)

    sql數(shù)據(jù)庫不能直接用instr函數(shù)

    sql數(shù)據(jù)庫不能直接用instr函數(shù)...
    2007-01-01
  • SQL Server控制語句的基本應(yīng)用

    SQL Server控制語句的基本應(yīng)用

    本篇文章介紹了,SQL Server控制語句的基本應(yīng)用。需要的朋友參考下
    2013-04-04
  • SQL里類似SPLIT的分割字符串函數(shù)

    SQL里類似SPLIT的分割字符串函數(shù)

    SQL對(duì)字符串的處理能力比較弱,比如我要循環(huán)遍歷象1,2,3,4,5這樣的字符串,如果用數(shù)組的話,遍歷很簡(jiǎn)單,但是T-SQL不支持?jǐn)?shù)組,所以處理下來比較麻煩。下邊的函數(shù),實(shí)現(xiàn)了象數(shù)組一樣去處理字符串。
    2011-04-04

最新評(píng)論

涿鹿县| 海城市| 福安市| 盐源县| 盐源县| 庐江县| 尼勒克县| 安泽县| 日土县| 天全县| 安庆市| 青川县| 手游| 康乐县| 德钦县| 讷河市| 绥棱县| 额尔古纳市| 芮城县| 瓦房店市| 遵义市| 阜康市| 息烽县| 屯昌县| 锦屏县| 平安县| 屯门区| 平遥县| 高州市| 嵊泗县| 石狮市| 阿荣旗| 南川市| 汾西县| 永新县| 阿勒泰市| 上蔡县| 扎赉特旗| 宜宾县| 澜沧| 东台市|