国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

深入講解阻塞現象的產生原因及處理方法

2024-07-21 02:42:10
字體:
來源:轉載
供稿:網友
1. 使用 sp_who 這個存儲過程, 查詢sql上的當前進程, 觀察 blk 列值是否有不為0的, 如果有不為 0 的, 表示有阻塞, 產生阻塞的進程的 spid 即是 blk 列值, 被阻塞的進程是 列 blk 值不為0的記錄行對應的 spid。

2. 執行 sp_lock

3. 執行 sp_lock

4. 結合 2, 3 分析原因。

5. 使用 dbcc inputbuffer(

如果要自動刪除阻塞的進程, 那么寫一個 job 定期查詢 sp_who , 將 blk 列值不為 0 的記錄找出來, 用 kill 殺掉相關的進程即可。

注意, 一般不要輕易殺進程, 如果你的程序沒有寫好, 可能會導致不完整的數據。

例如, 在寫訂單主表和明細表的處理中, 沒有使用事務, 當主表數據插入完成, 準備插入明細表數據時, 產生阻塞, 被你的監控程序 kill 掉的話, 就導致數據庫中有不完整的訂單(只有主表, 沒有明細數據)。

另外, 如果你的程序的錯誤處理沒有控制好, 則這樣殺進程也容易導致程序崩潰, 丟失等。

另外, 查詢進程相關的信息也可以直接查詢 master.dbo.sysPRocesses, 這里包含完整的信息, 你可以通過 blocked 列看是否有阻塞發生, 也可以看諸如登錄的用戶, 客戶端, 使用此進程的前端applicationame等信息。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华坪县| 宁津县| 灵武市| 汾阳市| 孝感市| 七台河市| 昭觉县| 通许县| 手游| 高尔夫| 太仆寺旗| 恩施市| 从江县| 赣州市| 嘉禾县| 巫山县| 台南县| 台湾省| 富裕县| 宜昌市| 登封市| 辽阳市| 于田县| 晋江市| 平定县| 恭城| 禹州市| 平凉市| 易门县| 东至县| 北流市| 垣曲县| 邵阳县| 竹溪县| 宜宾市| 营山县| 清水河县| 凯里市| 嘉定区| 乳源| 万盛区|