麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server并行操作優(yōu)化避免并行操作被抑制而影響SQL的執(zhí)行效率

2024-08-31 01:04:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

為什么我也要說(shuō)SQL Server的并行:

這幾天園子里寫關(guān)于SQL Server并行的文章很多,不管怎么樣,都讓人對(duì)并行操作有了更深刻的認(rèn)識(shí)。

我想說(shuō)的是:盡管并行操作可能(并不是一定)存在這樣或者那樣的問(wèn)題,但是我們不能否認(rèn)并行,仍然要利用好并行。

但是,實(shí)際開發(fā)中,某些SQL語(yǔ)句的寫法會(huì)導(dǎo)致用不到并行,從而影響到SQL的執(zhí)行效率

所以,本文要表達(dá)的是:我們要利用好并行,不要讓一些SQL的寫法問(wèn)題“抑制”了并行,讓我們享受不了并行帶來(lái)的快感

關(guān)于SQL Server的并行:

所謂的并行,指SQL Server對(duì)于那些執(zhí)行代價(jià)相對(duì)較大(這個(gè)相對(duì)跟你的設(shè)置有關(guān))的SQL時(shí),如果數(shù)據(jù)庫(kù)服務(wù)器存在多顆CPU,SQL Server查詢引擎會(huì)采用并行的方式,也即采用多顆CPU參與整個(gè)運(yùn)算過(guò)程,每顆CPU“分擔(dān)”一部分計(jì)算任務(wù),最后匯總合并各個(gè)CPU的計(jì)算的一種行為有時(shí)候,不當(dāng)?shù)牟⑿胁樵儾坏粫?huì)加快查詢的速度,想反會(huì)拖慢查詢的效率,如果采用不當(dāng)?shù)牟⑿胁僮鳎踔習(xí)绊懙秸麄€(gè)服務(wù)器的穩(wěn)定性。

所以SQL Server 究竟在多大代價(jià)下啟用并行,是由配置的,這個(gè)配置可根據(jù)具體的情況做修改,有人說(shuō)這個(gè)值的單位是“秒”,貌似沒(méi)見過(guò)權(quán)威的資料說(shuō)過(guò)到底單位是什么,這里暫不追究

有清楚這個(gè)閾值單位的園友情不惜賜教,謝了

sql,server并行操作優(yōu)化

盡管并行操作可能存在這樣活著那樣的問(wèn)題,但是我們不能因噎廢食,利用好并行,往往總是利大于弊。

但是并不是所有的執(zhí)行代價(jià)較大SQL都能用到并行操作,實(shí)際開發(fā)中,有一些SQL的寫法會(huì)抑制到并行操作,結(jié)果,導(dǎo)致整個(gè)SQL語(yǔ)句(存儲(chǔ)過(guò)程)的效率上不去。

下面來(lái)舉例說(shuō)明。

并行查詢是如何變成了串行的:

  如下是一個(gè)非常簡(jiǎn)單的查詢操作,這些寫法下,默認(rèn)情況下開啟了并行,可以看到,一共開啟了8個(gè)線程來(lái)對(duì)SQL語(yǔ)句做計(jì)算。

sql,server并行操作優(yōu)化

  當(dāng)然這SQL的執(zhí)行效率還算不錯(cuò),CPU時(shí)間是622毫秒,執(zhí)行總時(shí)間是130毫秒,

  這里不要弄混淆了,CPU時(shí)間的633毫秒,是8個(gè)CPU一共消耗的CPU時(shí)間,大于總的執(zhí)行130毫秒很正常的

  下面創(chuàng)建一個(gè)非常簡(jiǎn)單的函數(shù),

CREATE function [dbo].[fn_justFunction](@p_date date)returns dateasbeginreturn @p_dateend

  這個(gè)函數(shù)并沒(méi)有什么實(shí)際意義,執(zhí)行也非常簡(jiǎn)單,傳入一個(gè)時(shí)間,返回這個(gè)時(shí)間,

  當(dāng)然這里只是為了下面的操作演示,你完全可以說(shuō)我蛋疼,我只是為了演示并行被抑制的現(xiàn)象

  翻翻你的SQL代碼,有沒(méi)有類似這種寫法?

  然后我們這么寫這個(gè)查詢,就是在查詢條件上這么處理CreateDate>dbo.fn_justFunction('2015-1-1')(注意不是表的列,而是函數(shù)作用在查詢條件上),注意這個(gè)函數(shù)并不影響任何查詢結(jié)果,傳入的2015-1-1,返回位依舊是2015-1-1,但是這么一變化,并行就變成串行的了,SQL執(zhí)行期間只有一個(gè)CPU飚了起來(lái),使用了到達(dá)80%左右,,與此同時(shí)其他CPU跟沒(méi)事人一樣,也不上來(lái)幫忙,還是很閑還記得上面并行操作方式執(zhí)行時(shí)間是多少么?130毫秒,現(xiàn)在粗看起來(lái)是多少,這里是4S,也就是4000毫秒了。差了多少倍,我數(shù)學(xué)不好算不出來(lái)

  可以看到,并行操作和串行操作的效率差別還是很大的,對(duì)于CPU的利用也不充分(當(dāng)然我不是強(qiáng)調(diào)一定要用滿所有的CPU才算合理)

  再次強(qiáng)調(diào)一點(diǎn),這里并不是在表的字段上加函數(shù)抑制了索引什么的,純粹的影響到的是并行操作。

  當(dāng)然,抑制并行的寫法不單單是在查詢條件在使用函數(shù),實(shí)際開發(fā)中,影響會(huì)更大,

  因?yàn)閷?shí)際業(yè)務(wù)中數(shù)據(jù)有可能會(huì)更大,SQL也可能更加復(fù)雜,這種情況可能更加難以甄別。

  比如連接條件上,如下,連接條件上使用函數(shù)導(dǎo)致無(wú)法使用并行的情況,也是實(shí)際開發(fā)中遇到的

select * from TableA a inner join TableB b on a.id=b.id and a.Column=dbo.function(@Variable) where ***

  當(dāng)然抑制到并行操作的不單單只有這兩種寫法,還有可能潛在其他類似的寫法也會(huì)影響到并行查詢。

  這就要求我們?cè)趯慡QL的時(shí)候,不但要注意不能再字段上使用函數(shù)(無(wú)法使用該字段上的索引),同樣,查詢條件上也盡可能不要使用函數(shù),有可能影響到并行操作。

如果處理并行操作被抑制的情況:

  如果要解決類似這些個(gè)問(wèn)題,該怎么辦?其實(shí)也很簡(jiǎn)單,建議查詢條件通過(guò)函數(shù)運(yùn)算之后賦值給一個(gè)變量,用變量去作為查詢條件進(jìn)行查詢。

  再次開始了愉快的并行,享受并行帶來(lái)的快感。

  對(duì)于連接條件上的函數(shù)處理也類似,將結(jié)果計(jì)算出來(lái)之后,保存在一個(gè)變量中,把變量寫在連接條件中,

  當(dāng)然可能有其他辦法,我暫時(shí)還沒(méi)有想到。

總結(jié):

  本文通過(guò)一個(gè)簡(jiǎn)單的例子演示了并行操作被抑制的現(xiàn)象,說(shuō)明了并行和串行在執(zhí)行一個(gè)代價(jià)較大的SQL上的性能的巨大的差別

  其中提到的查詢方式是查詢條件上因?yàn)楹瘮?shù)的原因抑制了并行,完全區(qū)別于在查詢列上使用函數(shù)抑制索引的情況。

  并行查詢可以充分調(diào)動(dòng)CPU資源,以高效的方式完成查詢,合理的利用并行會(huì)很大程度上提高SQL的執(zhí)行效率。

  為了利用好并行,在寫SQL的時(shí)候,一定要注意,防止并行操作遭到抑制,給性能帶來(lái)影響.

  SQL優(yōu)化是一個(gè)艱難而又反復(fù)的過(guò)程,即便如此,也樂(lè)在其中。

  面對(duì)繁復(fù)SQL,不但要有過(guò)硬的技術(shù),也要有足夠的耐心,才能看清事物的本質(zhì)。

  對(duì)并行的理解還不夠充分,有不對(duì)的地方希望各位看官指出,謝謝。

以上所述是小編給大家介紹的SQL Server并行操作優(yōu)化避免并行操作被抑制而影響SQL的執(zhí)行效率,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MSSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青草伊人网 | 在线a毛片| 黄色影院在线看 | 国产无遮挡一级毛片 | 久久经典视频 | 欧美一级免费高清 | 色屁屁xxxxⅹ免费视频 | 爱操影视 | 成人黄色小视频在线观看 | 亚洲成人精品久久 | 久久伊人国产精品 | 久久毛片免费 | 狠狠干五月天 | 国产69精品久久久久99尤 | 一级视频网站 | 国产精品剧情一区二区在线观看 | 久久99精品久久久久久国产越南 | 国产精品久久久久久久久久大牛 | 99爱视频在线 | 国产二区三区在线播放 | 91短视频网页版 | 国产jjizz一区二区三区视频 | 国产三级三级三级三级 | 免费观看黄色片视频 | 男女亲热网站 | 国产亚洲福利 | 永久免费在线观看av | 黄色网址在线播放 | 91在线播放国产 | 日韩黄色成人 | 国产日本欧美在线观看 | 一级毛片在线观看视频 | 国产一级在线观看视频 | 精品免费国产一区二区三区 | 国产精品一区二区三区在线看 | 毛片在线免费视频 | 中文字幕综合在线观看 | 一本色道久久综合亚洲精品图片 | 久久成人综合视频 | 久久精品一二三区 | 国产91精品久久久久久 |