日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

用sp_lock診斷SQL Sever的性能問(wèn)題_Mssql數(shù)據(jù)庫(kù)教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:如何使用SQL Server 2008升級(jí)顧問(wèn)
微軟提供了SQL Server 2008升級(jí)顧問(wèn)(SQL Server 2008 Upgrade Advisor,SSUA),可以在更新數(shù)據(jù)庫(kù)及相關(guān)程序前幫助用戶檢測(cè)并識(shí)別可能遇到的升級(jí)問(wèn)題。該工具可以檢查SQL Server 2000和 SQL Serv

在IT 專家中有一種普遍的誤解,就是認(rèn)為“鎖定是不好的東西”,你必須盡一切可能保證數(shù)據(jù)庫(kù)鎖定不會(huì)使得進(jìn)程無(wú)法正常運(yùn)行。為了能夠確保一個(gè)一致的數(shù)據(jù)庫(kù)環(huán)境,在對(duì)資源進(jìn)行修改時(shí),數(shù)據(jù)庫(kù)引擎必須利用一種機(jī)制來(lái)獲得對(duì)資源的獨(dú)占權(quán)。

SQL Server中也用鎖定,它們是指為了達(dá)到這種一致性,數(shù)據(jù)庫(kù)引擎用來(lái)保證每一次只有一個(gè)線程同時(shí)訪問(wèn)同一個(gè)資源的對(duì)象。如果不用鎖定的話,各個(gè)進(jìn)程同時(shí)進(jìn)行數(shù)據(jù)修改就可能發(fā)生,這就會(huì)使數(shù)據(jù)庫(kù)處于一種不一致的狀態(tài)。這樣看來(lái),鎖定就成了好東西;但是,你應(yīng)該以特定的方式來(lái)計(jì)劃你的應(yīng)用程序,讓涉及的鎖定的數(shù)量降到最少。在這篇文章中,我將討論一個(gè)讓你能夠分析數(shù)據(jù)庫(kù)鎖定問(wèn)題的存儲(chǔ)過(guò)程。

找出什么被鎖定了

系統(tǒng)的反應(yīng)遲緩意味著你應(yīng)該做一些調(diào)查了。你的查找最好從測(cè)定系統(tǒng)發(fā)生鎖定的數(shù)量和頻率開(kāi)始。如果你的系統(tǒng)環(huán)境處理事務(wù)性很高的話,這樣各個(gè)應(yīng)用程序爭(zhēng)奪資源就會(huì)很常見(jiàn),從而引起鎖定。解決這些問(wèn)題的關(guān)鍵就在于能夠確定被鎖定的資源和爭(zhēng)奪資源的進(jìn)程。

sp_lock

sp_lock這個(gè)系統(tǒng)存儲(chǔ)過(guò)程與SQL Server 2000 打包在一起,它將使你對(duì)在你系統(tǒng)中發(fā)生的鎖定有深入的了解。這個(gè)程序會(huì)從主數(shù)據(jù)庫(kù)中的syslockinfo中返回與鎖定相關(guān)的大量信息,而主數(shù)據(jù)庫(kù)是一個(gè)包括了所有允許、轉(zhuǎn)換和等待鎖定請(qǐng)求信息的系統(tǒng)工作臺(tái)。

讓我們來(lái)看一下運(yùn)行 sp_lock 程序之后,它會(huì)為我們提供什么信息:

EXECUTE sp_lock

在我的系統(tǒng)中,這是該存儲(chǔ)過(guò)程返回的內(nèi)容。sp_lock 返回的信息并不是一目了然的,要獲得有用的數(shù)據(jù),還需要做一些查找。但是,你也可以復(fù)制該存儲(chǔ)過(guò)程的文本,然后創(chuàng)建一個(gè)新的,從而得到關(guān)于系統(tǒng)進(jìn)程的更好的解釋。(在這篇文章中,我們將集中討論sp_lock返回的數(shù)據(jù)。)

從上面的結(jié)果我們可以看到spid、dbid、objid、indid、type、resource、mode和status字段。spid是進(jìn)程標(biāo)識(shí)號(hào)碼,用于識(shí)別到SQL 服務(wù)器的連接。要發(fā)現(xiàn)哪些用戶和該spid相連,你就要執(zhí)行存儲(chǔ)過(guò)程sp_who,并將spid作為一個(gè)參數(shù)傳輸給該程序。dbid是鎖定發(fā)生的數(shù)據(jù)庫(kù),你可以在主數(shù)據(jù)庫(kù)中的sysdatabases表格中找到它。字段objid用來(lái)顯示在數(shù)據(jù)庫(kù)中鎖定發(fā)生所在的對(duì)象。要查看這個(gè)對(duì)象,你可以在主數(shù)據(jù)庫(kù)中的sysobjects表格中查詢指定的objid。

在以上的屏幕截圖中產(chǎn)生的單一記錄并不一定能顯示正在你的工作環(huán)境中發(fā)生的真實(shí)情況。在運(yùn)行這個(gè)程序時(shí),你想要找到500到1000個(gè)甚至更多結(jié)果。每一次你執(zhí)行sp_lock,都將有可能得到不同的結(jié)果,因?yàn)橛职l(fā)生了新的鎖定,而部分舊的鎖定已經(jīng)被解除了。如果你發(fā)現(xiàn)sp_lock返回的結(jié)果中,大量的結(jié)果都有著相同的spid,很有可能該進(jìn)程正在進(jìn)行大型的處理,同時(shí)這些鎖定可能開(kāi)始阻止新事務(wù)的發(fā)生。

當(dāng)你發(fā)現(xiàn)一個(gè)spid 獲得了大量的數(shù)據(jù)庫(kù)鎖定時(shí),這將有助于確定什么存儲(chǔ)過(guò)程或語(yǔ)句正在運(yùn)行。為了達(dá)到這個(gè)目的,運(yùn)行以下 DBCC 命令:

DBCC INPUTBUFFER(spid)

這個(gè)DBCC命令將返回正在EventInfo字段中運(yùn)行的語(yǔ)句的相關(guān)信息。

一個(gè)可靠的起點(diǎn)

系統(tǒng)運(yùn)行緩慢可能說(shuō)明你的表格上有大量的鎖定。造成這些鎖定的原因較多,如某個(gè)用戶正在你的系統(tǒng)中運(yùn)行一個(gè)相當(dāng)長(zhǎng)的查詢,一個(gè)進(jìn)程占用大量資源或者兩個(gè)關(guān)鍵進(jìn)程爭(zhēng)奪同一資源,經(jīng)常造成死鎖。

一旦發(fā)現(xiàn)你認(rèn)為正在減緩你系統(tǒng)速度的進(jìn)程,應(yīng)該怎么辦?在大多數(shù)情況下,不能采取任何措施,只能監(jiān)控系統(tǒng)。結(jié)束這個(gè)進(jìn)程并不是明智之舉,因?yàn)樗撕芏嘞到y(tǒng)鎖定,除非你完全肯定不會(huì)有其他的負(fù)面影響。不然的話,你就應(yīng)該想辦法自動(dòng)分析鎖定狀況。還有一個(gè)解決辦法就是想出一種方法,使得在一天的特定時(shí)間內(nèi),當(dāng)系統(tǒng)鎖數(shù)量達(dá)到極限時(shí),發(fā)出通知。

你對(duì)自己的系統(tǒng)信息收集的越多,在解決問(wèn)題時(shí),你的優(yōu)勢(shì)就越大。

Tim Chapman是肯塔基州路易維爾市一家銀行的SQL Server數(shù)據(jù)庫(kù)管理員,他有超過(guò)7年的行業(yè)經(jīng)驗(yàn)。

分享:看看自己掌握了多少SQL快捷鍵
SQL Server數(shù)據(jù)庫(kù)快捷鍵: 書(shū)簽:清除所有書(shū)簽。 CTRL-SHIFT-F2 書(shū)簽:插入或刪除書(shū)簽(切換)。 CTRL F2 書(shū)簽:移動(dòng)到下一個(gè)書(shū)簽。 F2 功能鍵 書(shū)簽:移動(dòng)到上一個(gè)書(shū)簽。 SHIFT F2

來(lái)源:模板無(wú)憂//所屬分類:Mssql數(shù)據(jù)庫(kù)教程/更新時(shí)間:2008-08-22
相關(guān)Mssql數(shù)據(jù)庫(kù)教程