最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
怎么看mysql進(jìn)程號(hào),linux如何查看進(jìn)程號(hào)

如何查mysql死鎖進(jìn)程

查詢死鎖進(jìn)程

創(chuàng)新互聯(lián)建站成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站開(kāi)發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),成都響應(yīng)式網(wǎng)站建設(shè)公司,網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:18980820575

采用如下存儲(chǔ)過(guò)程來(lái)查詢數(shù)據(jù)中當(dāng)前造成死鎖的進(jìn)程。

drop procedure sp_who_lock

go

CREATE procedure sp_who_lock

as

begin

declare @spid int

declare @blk int

declare @count int

declare @index int

declare @lock tinyint

set @lock=0

create table #temp_who_lock

(

id int identity(1,1),

spid int,

blk int

)

if @@error0 return @@error

insert into #temp_who_lock(spid,blk)

select 0 ,blocked

from (select * from master..sysprocesses where blocked0)a

where not exists(select * from master..sysprocesses where a.blocked =spid and blocked0)

union select spid,blocked from master..sysprocesses where blocked0

if @@error0 return @@error

select @count=count(*),@index=1 from #temp_who_lock

if @@error0 return @@error

if @count=0

begin

select '沒(méi)有阻塞和死鎖信息'

return 0

end

while @indexA href="mailto:=@count"=@count

begin

if exists(select 1 from #temp_who_lock a where id@index and exists(select 1 from #temp_who_lock where idA href="mailto:=@index"=@index and a.blk=spid))

begin

set @lock=1

select @spid=spid,@blk=blk from #temp_who_lock where id=@index

select '引起數(shù)據(jù)庫(kù)死鎖的是: '+ CAST(@spid AS VARCHAR(10)) + '進(jìn)程號(hào),其執(zhí)行的SQL語(yǔ)法如下'

select @spid, @blk

dbcc inputbuffer(@spid)

dbcc inputbuffer(@blk)

end

set @index=@index+1

end

if @lock=0

begin

set @index=1

while @indexA href="mailto:=@count"=@count

begin

select @spid=spid,@blk=blk from #temp_who_lock where id=@index

if @spid=0

select '引起阻塞的是:'+cast(@blk as varchar(10))+ '進(jìn)程號(hào),其執(zhí)行的SQL語(yǔ)法如下'

else

select '進(jìn)程號(hào)SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '進(jìn)程號(hào)SPID:'+ CAST(@blk AS VARCHAR(10)) +'阻塞,其當(dāng)前進(jìn)程執(zhí)行的SQL語(yǔ)法如下'

dbcc inputbuffer(@spid)

dbcc inputbuffer(@blk)

set @index=@index+1

end

end

drop table #temp_who_lock

return 0

end

GO

--執(zhí)行該存儲(chǔ)過(guò)程

exec sp_who_lock

補(bǔ)充:

一、產(chǎn)生死鎖的原因

在SQL Server中,阻塞更多的是產(chǎn)生于實(shí)現(xiàn)并發(fā)之間的隔離性。為了使得并發(fā)連接所做的操作之間的影響到達(dá)某一期望值而對(duì)資源人為的進(jìn)行加鎖(鎖本質(zhì)其實(shí)可以看作是一個(gè)標(biāo)志位)。當(dāng)一個(gè)連接對(duì)特定的資源進(jìn)行操作時(shí),另一個(gè)連接同時(shí)對(duì)同樣的資源進(jìn)行操作就會(huì)被阻塞,阻塞是死鎖產(chǎn)生的必要條件。

二、如何避免死鎖

1.使用事務(wù)時(shí),盡量縮短事務(wù)的邏輯處理過(guò)程,及早提交或回滾事務(wù);

2.設(shè)置死鎖超時(shí)參數(shù)為合理范圍,如:3分鐘-10分種;超過(guò)時(shí)間,自動(dòng)放棄本次操作,避免進(jìn)程懸掛;

3.優(yōu)化程序,檢查并避免死鎖現(xiàn)象出現(xiàn);

4.對(duì)所有的腳本和SP都要仔細(xì)測(cè)試,在正是版本之前;

5.所有的SP都要有錯(cuò)誤處理(通過(guò)@error);

6.一般不要修改SQL SERVER事務(wù)的默認(rèn)級(jí)別。不推薦強(qiáng)行加鎖。

三、處理死鎖

1、最簡(jiǎn)單的處理死鎖的方法就是重啟服務(wù)。

2、根據(jù)指定的死鎖進(jìn)程ID進(jìn)行處理

根據(jù)第二步查詢到的死鎖進(jìn)行,大致分析造成死鎖的原因,并通過(guò)如下語(yǔ)句釋放該死鎖進(jìn)程

kill pid --pid為查詢出來(lái)的死鎖進(jìn)程號(hào)

3、通過(guò)存儲(chǔ)過(guò)程殺掉某個(gè)庫(kù)下面的所有死鎖進(jìn)程和鎖

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[sp_killspid]

GO

create proc sp_killspid

@dbname varchar(200) --要關(guān)閉進(jìn)程的數(shù)據(jù)庫(kù)名

as

declare @sql nvarchar(500)

declare @spid nvarchar(20)

declare #tb cursor for

select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)

open #tb

fetch next from #tb into @spid

while @@fetch_status=0

begin

exec('kill '+@spid)

fetch next from #tb into @spid

end

close #tb

deallocate #tb

go

--使用方法,“db_name”為處理的數(shù)據(jù)庫(kù)名稱

exec sp_killspid 'db_name'

如何查看Linux下mysql服務(wù)的進(jìn)程是否正常運(yùn)行?

通過(guò)ps命令查看mysql進(jìn)程即可,執(zhí)行如下命令:

ps -aux|grep mysql

執(zhí)行結(jié)果中看到了mysql進(jìn)程,確定mysql正在運(yùn)行。

mysql 1634 0.0 0.1 13980 1268 ? S Aug11 0:00 [mysqld]

root 6849 0.0 0.0 4816 640 pts/1 S 09:40 0:00 grep mysql

如何查看mysqld進(jìn)程的Profiler

查了一下資料,My SQL可以用下面方法跟蹤sql 語(yǔ)句,以下方法以Windows平臺(tái)為例,linux雷同:

1 配置my.ini文件(在安裝目錄,linux下文件名為my.cnf

查找到[mysqld]區(qū)段,增加日志的配置,如下示例:[mysqld]log="C:/temp/mysql.log"

log_slow_queries="C:/temp/mysql_slow.log"

long_query_time=1

log指示日志文件存放目錄;

log_slow_queries指示記錄執(zhí)行時(shí)間長(zhǎng)的sql日志目錄;

long_query_time指示多長(zhǎng)時(shí)間算是執(zhí)行時(shí)間長(zhǎng),單位s。

Linux下這些配置項(xiàng)應(yīng)該已經(jīng)存在,只是被注釋掉了,可以去掉注釋。但直接添加配置項(xiàng)也OK啦。

2 重新啟動(dòng)mysql服務(wù)。注意事項(xiàng):A日志存放目錄必須提前存在,否則不能記錄日志。這里也局勢(shì)C:/temp目錄必須已經(jīng)存在

B 日志文件是linux格式的文本,建議用ultraEdit打開(kāi),轉(zhuǎn)換為dos格式查看(否則沒(méi)有換行,看不懂的)

C 服務(wù)在啟動(dòng)狀態(tài)下不能刪除日志文件,否則就無(wú)法記錄sql語(yǔ)句了。

D 不能用ultraEdit直接清除文件內(nèi)容后保存,否則也記錄不下來(lái)了。需要重啟服務(wù),如果ultraEdit保存了.bak,后記錄到此文件中。

E 可以用notepad清除文本后保存,可以繼續(xù)記錄日志。(怪怪的,也不建議用)


網(wǎng)頁(yè)名稱:怎么看mysql進(jìn)程號(hào),linux如何查看進(jìn)程號(hào)
文章轉(zhuǎn)載:http://fisionsoft.com.cn/article/dscejdo.html