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

sql server查詢語(yǔ)句阻塞優(yōu)化性能

 更新時(shí)間:2022年04月09日 16:27:02   作者:花陰偷移  
這篇文章介紹了sql server查詢語(yǔ)句阻塞優(yōu)化性能的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

 在生產(chǎn)環(huán)境下,有時(shí)公司客服反映網(wǎng)頁(yè)半天打不到,除了在瀏覽器按F12的Network響應(yīng)來(lái)排查,確定web服務(wù)器無(wú)故障后。就需要檢查數(shù)據(jù)庫(kù)是否有出現(xiàn)阻塞

當(dāng)時(shí)數(shù)據(jù)庫(kù)的生產(chǎn)環(huán)境中主表數(shù)據(jù)量超過(guò)2000w,子表數(shù)據(jù)量超過(guò)1億,且更新和新增頻繁。再加上做了同步鏡像,很消耗資源。

這時(shí)就要新建一個(gè)會(huì)話,大概需要了解以下幾點(diǎn):

  • 1.當(dāng)前活動(dòng)會(huì)話量有多少?
  • 2.會(huì)話運(yùn)行時(shí)間?
  • 3.會(huì)話之間有沒(méi)有阻塞?
  • 4.阻塞時(shí)間 ?

查詢阻塞的方法有很多。有sql 2000 的sp_lock, 有sql 2005及以上的dmv

一. 阻塞查詢 sp_lock

執(zhí)行 exec sp_lock  下面列下關(guān)鍵字段

spid 是指進(jìn)程ID,這個(gè)過(guò)濾掉了系統(tǒng)進(jìn)程,只展示了用戶進(jìn)程spid>50。

dbid 指當(dāng)前實(shí)例下的哪個(gè)數(shù)據(jù)庫(kù) , 使用DB_NAME() 函數(shù)來(lái)標(biāo)識(shí)數(shù)據(jù)庫(kù)

type 請(qǐng)求鎖住的模式

mode 鎖的請(qǐng)求狀態(tài)

  • GRANT:已獲取鎖。
  • CNVRT:鎖正在從另一種模式進(jìn)行轉(zhuǎn)換,但是轉(zhuǎn)換被另一個(gè)持有鎖(模式相沖突)的進(jìn)程阻塞。
  • WAIT:鎖被另一個(gè)持有鎖(模式相沖突)的進(jìn)程阻塞。

總結(jié):當(dāng)mode 不為GRANT狀態(tài)時(shí), 需要了解當(dāng)前鎖的模式,以及通過(guò)進(jìn)程ID查找當(dāng)前sql 語(yǔ)句 

例如當(dāng)前進(jìn)程ID是416,且mode狀態(tài)為WAIT 時(shí),查看方式 DBCC INPUTBUFFER(416)

用sp_lock查詢顯示的信息量很少,也很難看出誰(shuí)被誰(shuí)阻塞。所以當(dāng)數(shù)據(jù)庫(kù)版本為2005及以上時(shí)不建議使用。

 二.阻塞查詢  dm_tran_locks 

SELECT 
t1.resource_type,
t1.resource_database_id,
t1.resource_associated_entity_id,
t1.request_mode,
t1.request_session_id,
t2.blocking_session_id
FROM sys.dm_tran_locks as t1
INNER JOIN sys.dm_os_waiting_tasks as t2
ON t1.lock_owner_address = t2.resource_address;

上面查詢只顯示有阻塞的會(huì)話, 關(guān)注blocking_session_id 也就是被阻塞的會(huì)話ID,同樣使用DBCC INPUTBUFFER來(lái)查詢sql語(yǔ)句

三.阻塞查詢 sys.sysprocesses

SELECT 
 spid,
 kpid,
 blocked,
 waittime AS 'waitms', 
 lastwaittype, 
 DB_NAME(dbid)AS DB,  
 waitresource, 
 open_tran,
 hostname,[program_name],
 hostprocess,loginame,
 [status]
 FROM sys.sysprocesses WITH(NOLOCK) 
 WHERE    kpid>0  AND  [status]<>'sleeping'  AND spid>50
 AND spid<>@@SPID

sys.sysprocesses  能顯示會(huì)話進(jìn)程有多少, 等待時(shí)間, open_tran有多少事務(wù), 阻塞會(huì)話是多少. 整體內(nèi)容更為詳細(xì)。
關(guān)鍵字段說(shuō)明:

  • spid 會(huì)話ID(進(jìn)程ID),SQL內(nèi)部對(duì)一個(gè)連接的編號(hào),一般來(lái)講小于50
  • kipid 線程ID
  • blocked: 阻塞的進(jìn)程ID, 值大于0表示阻塞, 值為本身進(jìn)程ID表示io操作
  • waittime:當(dāng)前等待時(shí)間(以毫秒為單位)。
  • open_tran: 進(jìn)程的打開(kāi)事務(wù)數(shù)
  • hostname:建立連接的客戶端工作站的名稱
  • program_name 應(yīng)用程序的名稱。
  • hostprocess 工作站進(jìn)程 ID 號(hào)。
  • loginame 登錄名。
    • [status]
    • running = 會(huì)話正在運(yùn)行一個(gè)或多個(gè)批
    • background = 會(huì)話正在運(yùn)行一個(gè)后臺(tái)任務(wù),例如死鎖檢測(cè)
    • rollback = 會(huì)話具有正在處理的事務(wù)回滾
    • pending = 會(huì)話正在等待工作線程變?yōu)榭捎?/li>
    • runnable = 會(huì)話中的任務(wù)在等待,由scheduler來(lái)運(yùn)行的可執(zhí)行隊(duì)列中。(重要)
    • spinloop = 會(huì)話中的任務(wù)正在等待調(diào)節(jié)鎖變?yōu)榭捎谩?/li>
    • suspended = 會(huì)話正在等待事件(如 I/O)完成。(重要)
    • sleeping = 連接空閑
    • wait resource 格式為 fileid:pagenumber:rid 如(5:1:8235440)
    • kpid=0, waittime=0 空閑連接
    • kpid>0, waittime=0 運(yùn)行狀態(tài)
    • kpid>0, waittime>0 需要等待某個(gè)資源,才能繼續(xù)執(zhí)行,一般會(huì)是suspended(等待io)
    • kpid=0, waittime=0 但它還是阻塞的源頭,查看open_tran>0 事務(wù)沒(méi)有及時(shí)提交。

如果blocked>0,但waittime時(shí)間很短,說(shuō)明阻塞時(shí)間不長(zhǎng),不嚴(yán)重
如果status 上有好幾個(gè)runnable狀態(tài)任務(wù),需要認(rèn)真對(duì)待。 cpu負(fù)荷過(guò)重沒(méi)有及時(shí)處理用戶的并發(fā)請(qǐng)求

到此這篇關(guān)于sql server查詢語(yǔ)句阻塞優(yōu)化性能的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SQL Duplicate entry for key ‘PRIMARY‘主鍵重復(fù)報(bào)錯(cuò)解決

    SQL Duplicate entry for key ‘PRIMAR

    解決SQL主鍵重復(fù)報(bào)錯(cuò)的幾種方法包括使用INSERT IGNORE、REPLACE INTO、ON DUPLICATE KEY UPDATE等,本文就來(lái)介紹一下問(wèn)題解決,感興趣的可以了解一下
    2024-11-11
  • sql語(yǔ)句將數(shù)據(jù)庫(kù)一條數(shù)據(jù)通過(guò)分隔符切割成多列方法實(shí)例

    sql語(yǔ)句將數(shù)據(jù)庫(kù)一條數(shù)據(jù)通過(guò)分隔符切割成多列方法實(shí)例

    最近工作中遇到數(shù)據(jù)表中有一列數(shù)據(jù),然后需要將該列數(shù)據(jù)分成三列,下面這篇文章主要給大家介紹了關(guān)于sql語(yǔ)句將數(shù)據(jù)庫(kù)一條數(shù)據(jù)通過(guò)分隔符切割成多列的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Sql server中內(nèi)部函數(shù)fn_PhysLocFormatter存在解析錯(cuò)誤詳解

    Sql server中內(nèi)部函數(shù)fn_PhysLocFormatter存在解析錯(cuò)誤詳解

    這篇文章主要給大家介紹了關(guān)于Sql server中內(nèi)部函數(shù)fn_PhysLocFormatter存在解析錯(cuò)誤的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-09-09
  • MSSQL 監(jiān)控?cái)?shù)據(jù)/日志文件增長(zhǎng)實(shí)現(xiàn)方法

    MSSQL 監(jiān)控?cái)?shù)據(jù)/日志文件增長(zhǎng)實(shí)現(xiàn)方法

    今天就想實(shí)現(xiàn)這么一個(gè)功能,每天(頻率可以調(diào)整)去收集一下數(shù)據(jù)文件的信息,放到一個(gè)表里面,這樣方便我們分析數(shù)據(jù)文件的增長(zhǎng)演變例程,甚至你可以將數(shù)據(jù)文件的增長(zhǎng)幅度和業(yè)務(wù)變化關(guān)聯(lián)起來(lái)分析
    2013-08-08
  • SQL中NVL()函數(shù)的用法

    SQL中NVL()函數(shù)的用法

    SQL中的NVL()函數(shù)是一個(gè)空值轉(zhuǎn)換函數(shù),本文主要介紹了SQL中NVL()函數(shù)的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • 幾個(gè)擴(kuò)展存儲(chǔ)過(guò)程使用方法

    幾個(gè)擴(kuò)展存儲(chǔ)過(guò)程使用方法

    sqlserver里面有一些危險(xiǎn)的擴(kuò)展存儲(chǔ)過(guò)程,可以操作注冊(cè)表,所以很多情況下,下面的存儲(chǔ)過(guò)程為了服務(wù)器安全都會(huì)將這些存儲(chǔ)過(guò)程刪除。不過(guò)防御與安全同等重要。下面是具體的注冊(cè)的操作方法。
    2010-07-07
  • 文本、Excel、Access數(shù)據(jù)導(dǎo)入SQL Server2000的方法

    文本、Excel、Access數(shù)據(jù)導(dǎo)入SQL Server2000的方法

    昨天參加一個(gè)項(xiàng)目的維護(hù),因?yàn)楦鞣N原因,數(shù)據(jù)在不同服務(wù)器上不一致,所以需要重新將數(shù)據(jù)庫(kù)清空一次,并將整理后的數(shù)據(jù)重新導(dǎo)入。需導(dǎo)入的數(shù)據(jù)源為文本文件,記錄以行存儲(chǔ),“,”逗號(hào)分割各字段,每個(gè)字段值用“”雙引號(hào)封閉。
    2008-10-10
  • SQL?Server使用T-SQL進(jìn)階之公用表表達(dá)式(CTE)

    SQL?Server使用T-SQL進(jìn)階之公用表表達(dá)式(CTE)

    這篇文章介紹了SQL?Server中T-SQL的公用表表達(dá)式(CTE),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • SQL?Server?2008?R2完美卸載教程(親測(cè)有用)

    SQL?Server?2008?R2完美卸載教程(親測(cè)有用)

    SQL Server 2008 R2是一款非常強(qiáng)大的數(shù)據(jù)庫(kù)管理系統(tǒng),但在某些情況下可能需要卸載它,下面這篇文章主要給大家介紹了關(guān)于SQL?Server?2008?R2完美卸載的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 有關(guān)sqlserver帳號(hào)被禁用的處理方法

    有關(guān)sqlserver帳號(hào)被禁用的處理方法

    這篇文章主要介紹了有關(guān)sqlserver帳號(hào)被禁用處理方法,需要的朋友可以參考下
    2017-12-12

最新評(píng)論

桂林市| 东明县| 武汉市| 蓬莱市| 淮北市| 璧山县| 岱山县| 习水县| 隆林| 海安县| 伽师县| 蓝山县| 集安市| 福鼎市| 邛崃市| 宁强县| 新和县| 太仆寺旗| 城固县| 山阳县| 四会市| 保康县| 吴堡县| 巴南区| 沾化县| 铜梁县| 锡林郭勒盟| 鹿泉市| 任丘市| 灵山县| 山东省| 阿拉善左旗| 涿州市| 太原市| 泉州市| 琼结县| 虎林市| 武邑县| 上杭县| 卫辉市| 阿城市|