乙個奇葩的sql導致拒絕更新

2021-06-16 12:53:18 字數 614 閱讀 2781

背景

乙個業務對外開放介面,開發人員可以呼叫入口摻入一些值給服務端;

問題如題,系統中遇到乙個sql

update  xxa  set column1='1' wherecolumn2='1'/**/or/**/sleep(10)/**/and/**/'1'='1';

xxa中的表結構為自增主鍵id,column 2上有唯一索引;

這個語句的執行結果是什麼呢?xxa表的記錄大概有1000萬,執行這個語句相當耗時,語句中用了or 條件,整個語句用不到索引,導致全表掃瞄,每掃瞄一行sleep 10s,先出處於

user sleep 狀態,該狀態就說明mysql 在呼叫乙個sleep 函式,但是整個執行緒不是處於空閒狀態,所以wait_timeout,interactive_timeout超時設定對該類執行緒不起作用,導致執行緒一直執行下去,該錶其他的update 語句全部等待鎖超時而失敗;

前端也新增了各種對sql的過略函式,但是這個語句不在那個過略範圍,上面的語句也可能導致全表更新;

解決:1、完善監控,增加活躍事務時間超過60s(等待鎖超時為50s)就報警;

2、暴力的方式是加乙個定時指令碼,一旦執行多久還沒執行結束直接kill ;

乙個奇葩的需求

今天和朋友聊天突然給我說拍一下錄取通知書封面,一解釋原因原來是小夥伴碰到了乙個奇葩需求。拍攝內容 錄取通知書封面 拍攝要求 1 拍攝角度在通知書正上方,通知書要是原來的形狀,不要產生形變。主要內容為通知書,通知書邊上留一部分空白 2 最好用相機,用手機拍的話發原圖 3 拍攝時在明亮處拍攝,同時通知書...

乙個奇葩的儲存過程

4。function 校驗單證是否可以回銷 parameter p formno 單證號 p institutionno 機構 前兩位 p rtn rcptno 業務單號 p flag 是否可以回銷標誌,y 可以回銷,n 不可以回銷 p message 錯誤資訊返回 procedure formno...

我的乙個奇葩外貿客戶

下面分享乙個奇怪又很棒的客戶 我的乙個奇葩外貿客戶 這位客戶是中東人,平時接觸我們公司都是年輕的 兄弟,經驗不是很豐富。不過他身後站著乙個老謀深算的boss,關鍵時刻會親自出門。他們還有乙個中國 負責檢驗 貨櫃監管等事宜。我對這個客戶最深的感受就是太善變了,經常不按規矩出牌,和他們打交道,你永遠不知...