1.此時,若去kill
insert /update 的session id
是否會造成 insert /update 的資料不完整
還是,他會 整批不寫入/不更新 ,所以沒差?
你要Rollback,才會整批不寫入。
2.還是該如何找到源頭,砍掉select 語法,才不會造成 insert /update 資料不完整?
我從我的筆記裡面安到的:
找到卡住的Transaction
```sql
SELECT * FROM sys.sysprocesses WHERE open_tran = 1
```
關於Lock的事情,我想更重要的是解決Lock,並理解該如何處理,直接使用nolock可以閃過這部分,但我不建議這樣使用。
您好:
謝謝.
當下,會想讓LOCK 消失,但 後續仍想找到LOCK 哪一段語法造成的,該如何去找?
有辦法找到 最耗時的語法,來除錯嗎?
找最耗時的語法來處理正確嗎?
還是 有LOCK的歷史資料可找? 因為當下,會想先排除,讓系統可用.
2.您說的
SELECT * FROM sys.sysprocesses WHERE open_tran = 1
是指?
這一句沒有LOCK撈的時就,就有一些資料了
謝謝
要找到Dead Lock的語法,你上網google一下就有了
[https://topic.alibabacloud.com/tc/a/four-ways-to-track-sql-server-deadlock_1_42_30070860.html]https://topic.alibabacloud.com/tc/a/four-ways-to-track-sql-server-deadlock_1_42_30070860.html
如果想讓Dead Lock消失,建議先從語法先開始修改,最後才考慮手動上鎖甚至是修改DB架構。
您好:
謝謝
想請問
4.使用windows效能計數器檢測到死結再去sql中查詢
命令列輸入:perfmon 或者 perfmon /sys
選擇執行個體:SQL Server :Locks \ Number of DeadLocks/sec \ _Total
這一個 「
選擇執行個體:SQL Server :Locks \ Number of DeadLocks/sec \ _Total
」
他是指?
參考
Select * From a With(NoLock)
只會讀取未被更新的資料~
如果你正在讀取資料~
但是執行了update , insert ,delete
這些後面影響的資料~
不會影響變動正在讀取的資料表
也就是你看到的一定是舊資料~
除非你在重新執行查詢~
才會看到你更新完成的資料~
基本上是DML指令(Update/Delete/Insert)才會造成造成Lock的主要原因,Select指令是DQL,只是因為要讀的資料被Lock了,所以一直卡在那裡,您砍了Select指令也不會解決問題。
至於砍掉DML指令會不會造成資料不完整?
您好:
1.若整個 INSERT MASTER+ DETAIL,有包,則 整個ROLLBACK
若沒有包,刪掉MASTER INSERT ,則會有DETAIL 寫入 ?
您說的這種情況,依Detail Table上是否有用Master Table的主鍵作FK,又分為兩種情境:
如果我的回答對您有幫助,可否選我為"最佳解答"?還差3個我就升級了,厚顏拜託,請您幫幫忙喔~~