乙個update差點引發的血案

2021-06-22 02:32:44 字數 1158 閱讀 5766

三條語句如下(因為保密原因表名都是處理過的測試表名):

update uct_user_abc t,,uct_udc  t1 set t.user_type="teacher" where  t1.id = t.user_id and  t1.user_type = 1;

update uct_user_abc t,uct_udc  t1 set t.user_type="parent" where   t1.id = t.user_id and t1.user_type = 2;

update uct_user_abc t,uct_udc  t1 set t.user_type="student" where t1.id = t.user_id and t1.user_type = 3;

然後在執行前隨手看了一下前兩條sql的執行計畫如下:

看執行計畫都走了索引,掃瞄紀錄雖然不少但因為是ssd盤,所以預估執行也很快差不多十幾秒的樣子,然後就開始了... ... 

首先設定非自動提交:

set autocommit=0然後執行前兩個sql最後commit,事實證明確實很快,ok 一切順利。

然後感覺第三條應該也差不多,故同樣的方式執行第三條語句,發現很慢,並且發現大量慢查詢!

感覺不對勁,立馬中斷執行,然後灰頭土臉的趕緊看了一下第三條sql的執行計畫如下:

差點沒**而亡,居然是全表掃瞄,這下就理解了為啥那麼多的阻塞,innodb不走索引的話就相當於表鎖,導致更新和插入阻塞。

最後,等壓力不大的時候偷偷摸摸的執行了一把足足4分多鐘才執行完成。

ps: 作為乙個dba,有時候真不要太相信直覺,細節之處才能見真性情。

乙個memset引發的血案

前幾天做了一道bst題,提交了幾次都是wa,今天抽空拿了出來仔細瞧瞧總算被我發現禍頭根源.總結原因還在於自己對memset不太了解,以前用對估計也是瞎貓撞見死耗子 memset的介紹 void memset void buffer,int ch,size t count buffer 指向某段記憶體...

乙個分號引發的「血案」

再多的表情也無法詮釋我現在的心情!a b for matrices 這是很水的一道題,然而卻整整折騰了我2個多小時。從晚上6點多開始,花了沒幾分鐘就把 敲好了,可是資料一測,竟然不對,然後就開始找問題,找了很久,我竟然都還沒看出問題在哪,越找心裡越不爽,這麼做明明對的呀,一執行怎麼就錯了呢?一直到了...

乙個strlen引發的血案

部分測試 原來是這樣的 int decryptrelation aesdecryptfromfiletobytes const std string in file path,unsigned char out data,const char aes encrypt key,int in data ...