台灣最大程式設計社群網站
線上人數
976
 
會員總數:245959
討論主題:189543
歡迎您免費加入會員
討論區列表 >> MS SQL >> update 緩慢
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
update 緩慢
價值 : 100 QP  點閱數:1114 回應數:16
樓主

無尾熊
門外漢
0 3
70 15
發送站內信





更新時相當緩慢,其他資料表沒有這個問題,資料不到10筆



PK Account ItemID IsEquip
1 a 10001 False
2 a 10002 True
3 a 10003 False

資源監視器圖

搜尋相關Tags的文章: [ mssql ] , [ sql ] , [ update ] ,
本篇文章發表於2016-10-15 20:24
1樓
不錯的參考

彩虹
檢舉此回應
依這樣子的訊息,真的看不出什麼
欄位型態都OK嗎?

1.你把這張表重建試試看 ((因為你說只有這個資料表有問題,而且筆數不多))
2.先改成下where PK=1 試試看
本篇文章回覆於2016-10-15 21:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

無尾熊
檢舉此回應
1.由於該PK是自動索引並無法真正查詢到資料內容。
2.該資料庫的帳號與道具ID會重複所以使用WHERE Account='a' AND ItemID='10001'來搜尋
3.該PK使用者搜尋次數是0,且使用者掃描次數超多高於更新次數

該資料庫為玩家道具資料庫,會有相同帳號與道具ID,該如何建立正確索引。
本篇文章回覆於2016-10-16 11:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

無尾熊
檢舉此回應
參考過天堂角色道具資料庫也是自動PK

是因為查詢和更新的語法有問題導致?

是使用COM元件服務進行查詢
且為共用交易 [Transaction(TransactionOption.Required)]
本篇文章回覆於2016-10-16 11:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

無尾熊
檢舉此回應
用Account ItemID 當PK使用者掃描次數超多高於更新次數正常
但是速度一樣緩慢
本篇文章回覆於2016-10-16 12:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

真的有點難
檢舉此回應
看一下是否有trigger 或排程資料的影響到
本篇文章回覆於2016-10-16 12:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

無尾熊
檢舉此回應


本篇文章回覆於2016-10-16 13:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

pilipala
檢舉此回應
Index 欄位順序是 Account + ItemID 的話,可以改為 ItemID + Account,看看 update 語法會不會用到 Index Seek
本篇文章回覆於2016-10-17 08:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
最有價值解答

Daimom
捐贈 VP 給 Daimom 檢舉此回應
還是有被lock住?
本篇文章回覆於2016-10-17 12:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

無尾熊
檢舉此回應


同樣的Update 一開始很正常 可是多來個幾次等待時間就會拉到10幾秒。
過一段時間後(1~2分)再Update 也是一開始很正常後來緩慢
本篇文章回覆於2016-10-18 08:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

無尾熊
檢舉此回應
本篇文章回覆於2016-10-18 09:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

無尾熊
檢舉此回應
應該是被LOCK住了 請問我該應如何解決這問題?
本篇文章回覆於2016-10-18 09:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
這看起來只能從程式來解決了。
因為看起來 UPDATE 完後,並沒有釋放掉該連線。
導至一直鎖表的情況。

不知道mssql有沒有像mysql的innodb的做法。
這樣就比較不用擔心鎖表的問題了。
本篇文章回覆於2016-10-18 11:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

無尾熊
檢舉此回應
對表格進行反復更新。如果兩個連接同時運行,死鎖就一定會發生。

目前手動用Kill可以解決但是要怎麼在發生時自動解決這問題?
本篇文章回覆於2016-10-18 12:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

無尾熊
檢舉此回應
sql conn 有使用using自動釋放
本篇文章回覆於2016-10-18 12:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

無尾熊
檢舉此回應

本篇文章回覆於2016-10-18 12:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.