基本業務是這樣... 我現在在做一個系統,有時候會有搶票,并發量比較大,所以一般這個時候,系統后面就發生大量的死鎖....
我的表大概簡單來說 就 五個,可以簡單說為 A,B,C,D,E,然后一些查詢的存盤程序①,②,③,然后還要主要提交的存盤程序(1)
在并發量大的時候,各個都訪問了存盤程序(1),所以會導致這個存盤引起死鎖。
但是我現在優化的是①,②,③這些查詢的存盤,我在這些存盤上面,所有查詢A,B,C,D,E表的select下,都是用了 with nolock....
我現在想做的就是,展示給客戶看的時候,不要發生阻塞,這些表都是允許有臟資料的,所以可以用with nolock....
只要提交的存盤程序(1)里面不用with nolock 就能保證資料準確了。。
但是我現在發生的問題是,即便①,②,③使用了with nolock,但是當用戶呼叫這些存盤時,依然會報 訪問超時...或者
事務(行程 ID %1!)與另一個行程已被死鎖在資源 {%2!} 上,且該事務已被選作死鎖犧牲品 類似的錯誤
這個我有點想不明白,因為我這些查詢是沒有用事務的,而且也開啟了with nolock,所以我覺得①,②,③這些查詢存盤執行時
不會發生這種錯誤才對,如果是提交的存盤(1)報錯,我是能理解的,但是不能理解①,②,③執行時也報錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/260228.html
標籤:疑難問題
下一篇:MySQL事務
