補償介面中迴圈一直執行sql的問題

2022-09-14 11:36:09 字數 768 閱讀 7375

事件:

專案即將上線,測試,觀察日誌,發現一sql在dal.xml中一直刷日誌,但對應在biz日誌卻是空的

排查步驟:

1、檢視對應日誌的sql,在專案中找到對應**所在位置,檢視入口與**邏輯

介面是用作補償,使用的是簡答的controller呼叫業務,排程配置在任務系統,該sql是在補償中輪詢修改查詢符合補償要求的sql

1、懷疑測試在壓測,dal日誌也打在這個檔案中

向對應測試人員提出問題,得到回覆無人操作

2、仔細觀察該業務**,該業務**如下:

根據**判斷出現死迴圈執行職能是乙個原因:

total>0進入執迴圈,查詢出道的集合卻是空的,導致無法執行total--,所以死迴圈

觀察total的得到**,發現它是查詢sql的count數量,兩邊應該一致的,因此出現問題的原因感覺是安全性問題,就是進入迴圈後資料被修改了,後面發現好多操作都會修改同一張表的排程重試次數字段,就是說好多表與該操作有關設計有問題。

排程重試次數應該儲存在排程記錄表中而非資料表中。

這段diamante寫的分頁查詢的結果沒問題,卻危險,if沒有考慮else的情況,改為標準分頁形式會更加可靠。

寫**需要思考,**的含義,copy然後出問題拋然後甩只能。。。

sql重建索引一直執行 索引 sql執行慢續

之前有關sql語句執行變慢的原因解析中,提到過索引在sql語句執行過程中的作用 用的好,可以提高10倍左右的速度,提高效率,而用的不好,會降低效率。通過三個方面解析索引 索引的使用場景 索引種類 聚集索引和非聚集索引的查詢效率 續 在資料結構中的索引原理 索引就好比 本書的 錄,它可以幫我們快速進 ...

Service使用 一直執行的後台服務

專案中需要實現訊息推送 不依賴程式是否開啟,自動隔一段時間去伺服器獲取相關訊息,原理類似郵件系統。開始想到用鬧鐘 alarmmanager,以前做開獎提醒用過。後來嘗試用service。涉及到幾點 1 退出程式,service依然執行 2 開機,啟動service 3 不重複啟動service 注意...

ORACLE 如何kill掉一直執行的job

今天發現資料庫乙個job一直在執行,都執行了5個小時還在執行,所以想辦法給刪除掉 系統環境 oracle 10g aix作業系統 操作步驟如下 第一步 查詢出來那個job在執行,找個對應的sid欄位 1 select from dba jobs running 找到job對應的sid 第二部 通過以...