好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > SqlServer中如何解決session阻塞問(wèn)題

SqlServer中如何解決session阻塞問(wèn)題

熱門(mén)標(biāo)簽:我要地圖標(biāo)注數(shù)量有限制嗎 400電話辦理泰安 電話機(jī)器人怎么代理商 安卡拉地圖標(biāo)注app 互聯(lián)網(wǎng)電話外呼系統(tǒng) 千呼電話機(jī)器人可以試用嗎 電銷(xiāo)需要外呼系統(tǒng)嗎 家庭農(nóng)場(chǎng)地圖標(biāo)注名稱怎樣起名 零成本地圖標(biāo)注賺錢(qián)

簡(jiǎn)介

對(duì)于數(shù)據(jù)庫(kù)運(yùn)維人員來(lái)說(shuō)創(chuàng)建session或者查詢時(shí)產(chǎn)生問(wèn)題是常規(guī)情況,下面介紹一種很有效且不借助第三方工具的方式來(lái)解決類似問(wèn)題。

最近開(kāi)始接觸運(yùn)維工作,所以自己總結(jié)一些方案便于不懂?dāng)?shù)據(jù)庫(kù)的同事解決一些不太緊要的數(shù)據(jù)庫(kù)問(wèn)題。類似方法很多理論也很多,我就不做深究,就是簡(jiǎn)單寫(xiě)一個(gè)方案,便于菜鳥(niǎo)使用的。

阻塞理解

在Sql Server 中當(dāng)一個(gè)數(shù)據(jù)庫(kù)會(huì)話中的事務(wù)正鎖定一個(gè)或多個(gè)其他會(huì)話事務(wù)想要讀取或修改的資源時(shí),會(huì)產(chǎn)生阻塞(Blocking)。通常短時(shí)間的阻塞沒(méi)有問(wèn)題,且是較忙的應(yīng)用程序所需要的。然而,設(shè)計(jì)糟糕的應(yīng)用程序會(huì)導(dǎo)致長(zhǎng)時(shí)間的阻塞,這就不必要地鎖定了資源,而且阻塞了其他會(huì)話讀取和更新它們。

例子

為了更好說(shuō)明,下面用一個(gè)例子來(lái)介紹。創(chuàng)建一個(gè)表并插入數(shù)據(jù),然后創(chuàng)建不同的session,同事阻塞session。具體的代碼截圖如下:

1.創(chuàng)建表Employee

2.插入測(cè)試數(shù)據(jù)

現(xiàn)在我們有了測(cè)試表,表中有12條數(shù)據(jù),打開(kāi)另一個(gè)查詢對(duì)話框在SSMS中(意味著重新創(chuàng)建了一個(gè)session)

3.在新的查詢窗口中首先要開(kāi)啟事務(wù),然后寫(xiě)一個(gè)插入語(yǔ)句

在這個(gè)地方,我們能看到開(kāi)啟了一個(gè)事務(wù)。但是沒(méi)有end tran 來(lái)終止事務(wù),因此事務(wù)狀態(tài)為“open”,現(xiàn)在運(yùn)行腳本來(lái)看一下當(dāng)前看起的運(yùn)行處于“open”狀態(tài)的session。

現(xiàn)在能夠看到如上圖展示一樣,運(yùn)行的查詢正在open狀態(tài)的session。我們執(zhí)行了這個(gè)命令但是沒(méi)有完結(jié)它,DBA會(huì)聯(lián)系這個(gè)session的創(chuàng)建者來(lái)完成事務(wù),或者回滾事務(wù)。

現(xiàn)在讓我們創(chuàng)建另一個(gè)session,更新一條記錄并且不提交,即讓查詢session的狀態(tài)為“open”。因此在新的查詢窗口中 寫(xiě)一個(gè)語(yǔ)句來(lái)執(zhí)行如下:

這里會(huì)看到系統(tǒng)正在運(yùn)行后沒(méi)有完成語(yǔ)句的狀態(tài)(因?yàn)樯弦粋€(gè)事務(wù)沒(méi)有關(guān)閉導(dǎo)致表鎖,這個(gè)不能插入),現(xiàn)在可以在另外的窗口查詢一下阻塞的情況,如下檢查阻塞的session。

如上所示,阻塞的session ID是58,由于我們更新查詢導(dǎo)致阻塞了54的執(zhí)行,54就是我們插入數(shù)據(jù)未提交的批處理。

現(xiàn)在我們能搞清楚阻塞的原因,也就可以從容解決阻塞了。

解決

方案1

在了解業(yè)務(wù)的情況下,可以直接使用kill session ID的語(yǔ)句來(lái)終止某個(gè)阻塞的session。

方案2

在執(zhí)行的事務(wù)的起始加入“set lock_timeout 1000” 語(yǔ)句,這表示如果阻塞超過(guò)1000毫秒,這個(gè)請(qǐng)求將被終止。

方案3

回滾或者提交事務(wù)。這個(gè)就不細(xì)說(shuō)了。

下面是所有語(yǔ)句的代碼:

/****Creating dummy table Employee ****/ 
CREATE TABLE Employee ( Empid int NOT NULL, Name nchar(10) NULL, City nchar(10) NULL ) ON [PRIMARY] GO 
/**** Insert dummy data in Employee table *****/ 
Insert into Employee Values(1245,'George','Jax'), (1045,'Peter','Anadale'), (1157,'John','Dallas'), (1175,'Pete','Topeka'), (875,'Petron','Vienna'), 
(2311,'Kohli','Mumbai'), (1547,'Peter','Kansas'), (3514,'Abian','KHI'), (4251,'Ghani','Alexandria'), (957,'Ahmed','Vienna'), (1084,'Bhanu','Manderin'), 
(2954,'Ganeshan','Mcclean')
/***** Insert query in new session ****/ 
BEGIN TRAN Insert into Employee Values(1245,'George','Jax') 
/**** Query to check currently running sessions ****/ 
SELECT DISTINCT name AS database_name, session_id, host_name, login_time, login_name, reads, writes FROM sys.dm_exec_sessions 
LEFT OUTER JOIN sys.dm_tran_locks ON sys.dm_exec_sessions.session_id = sys.dm_tran_locks.request_session_id 
INNER JOIN sys.databases ON sys.dm_tran_locks.resource_database_id = sys.databases.database_id 
WHERE resource_type > 'DATABASE' --AND name ='specific db name' 
ORDER BY name
/**** update query in new session ****/ 
update Employee set name = 'SHERAZ' where empid = 1245 
/**** Query to check blocking queries with session id ****/ 
SELECT session_id, blocking_session_id, text FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle); 
/*** Command if you want to kill blocking session ****/ kill (54)

總結(jié)

自己也使用過(guò)多種不同的語(yǔ)句來(lái)查詢定位阻塞甚至死鎖,然后解決,這里也是介紹一種臨時(shí)解決方式。萬(wàn)變不離其宗,歸根結(jié)底還是因?yàn)榇a甚至數(shù)據(jù)庫(kù)設(shè)計(jì)上存在很多問(wèn)題才導(dǎo)致的阻塞,比如缺失索引、事務(wù)中的查詢性能和邏輯順序存在問(wèn)題、T-SQL語(yǔ)句性能引起的等等不一而足。對(duì)于一些常年解決類似問(wèn)題的DBA人員來(lái)說(shuō)沒(méi)啥價(jià)值,但是對(duì)于不太理解數(shù)據(jù)庫(kù)的人來(lái)說(shuō)還是能暫時(shí)解決一些緊急問(wèn)題,當(dāng)然最后還是要把理論基礎(chǔ)打好才能盡可能的杜絕類似情況。

以上所述是小編給大家介紹的SqlServer中如何解決session阻塞問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • mysql的udf編程之非阻塞超時(shí)重傳
  • sql server 2000阻塞和死鎖問(wèn)題的查看與解決方法
  • SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會(huì)導(dǎo)致阻塞
  • 利用sys.sysprocesses檢查SqlServer的阻塞和死鎖
  • SQL2008中SQL應(yīng)用之-阻塞(Blocking)應(yīng)用分析
  • sqlserver中幾種典型的等待
  • SQL語(yǔ)句實(shí)現(xiàn)查詢當(dāng)前數(shù)據(jù)庫(kù)IO等待狀況
  • SQL語(yǔ)句練習(xí)實(shí)例之三——平均銷(xiāo)售等待時(shí)間
  • 系統(tǒng)隱形殺手——阻塞與等待(SQL)

標(biāo)簽:文山 濱州 來(lái)賓 大同 黃山 東營(yíng) 池州 新鄉(xiāng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SqlServer中如何解決session阻塞問(wèn)題》,本文關(guān)鍵詞  SqlServer,中,如何,解決,session,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SqlServer中如何解決session阻塞問(wèn)題》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于SqlServer中如何解決session阻塞問(wèn)題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美疯狂性受XXXXX喷水更猛| 午夜性色福利视频| rh男男车车的车车视频免费看| 夫妇交换性3云播放| 嗯哦好爽| 深夜网站在线观看| 菲古拉性战视频magnet| 范冰冰太紧了…好爽| 给个网站最新的2021| 甜性涩爱韩国HD未删在线| 18禁高潮出水呻吟娇喘MP3| 岳的屁股好大| 欧美一级纶理片免费| 欧美freesex多人又粗又大| 精品久久久99大香线蕉| 亚洲中文字幕无码爆乳aV男男| 国产成人精品在线| 欧美1314性欧美| 大佬们的共妻H受孕| www.91b1在线偷拍| 亚洲69av| 四虎精品不卡一区AV视频| 艳母视频在线观看| 韩国电影《私人教练》| 调教校花母狗| avhd在线观看| 欧美18videosex69| 国产偷自视频在线观看| 少妇被又大又粗又爽毛片A片图片| 日本一级做a爱片免费看| 六月丁香婷婷激情国产| 欧美视频在线免费| 欧美性猛片AAAAAAA做受| 第69章 亲了亲他 于他心上做妖精 | 强开四岁的花苞| 91精品国产自产在线观看高清| 欧产?日产?国产69| cctv8在线直播免费观看| 欧美AV无码国产青草视频| 小蜜桃4美国伦理| 欧美肥妇tubevideos|