mysql建立索引導致鎖表阻塞查詢

2021-10-22 18:26:47 字數 778 閱讀 2963

慢查詢不一定需要duri資料來源,資料庫自帶相應的記錄表

information_schema.processlist   

show processlist 或者  select * from information_schema.processlist where command not in (『sleep』)

在資料庫oracle遷移到mysql的過程中,因為團隊每個人都負責了一些模組,難免會對錶的操作有衝突,比如我正在給這張表建立索引,但是他卻在進行查詢,這樣就會導致雙方都失敗。

正所謂mysql在進行alter table等ddl操作時,有時會出現waiting for table metadata lock的等待場景。而且,一旦alter table tablea的操作停滯在waiting for table metadata lock的狀態,後續對tablea的任何操作(包括讀)都無法進行,因為他們也會在opening tables的階段進入到waiting for table metadata lock的鎖等待佇列。如果是產品環境的核心表出現了這樣的鎖等待佇列,就會造成災難性的後果

解決方法通過命令檢視慢查詢:

select * from information_schema.processlist where command not in (『sleep』)

發現有慢sql,針對該錶。

解決方式:kill掉慢sql程序,索引新增立刻完成

附上慢sql問題解析:

all, index, range, ref, eq_ref, const, system, null

mysql查詢因為索引導致表阻塞或死鎖

今天在生產上對錶進行select查詢,導致阻塞死鎖,解決思路 執行show processlist 或者以下sql select from information schema.processlist 我們線上的問題是執行select操作時,建立索引所以導致死鎖,還有select太複雜查詢時間過長導...

mongodb 建索引導致資料庫阻塞

在mongodb上建索引可能會對mongodb集群對可用性產生負面影響。在生產服務上,如果針對乙個大集合觸發建立索引,且在前台執行,你可能會發現,在索引建完之前,整個集群都無影響。在乙個大集合上,這個過程可能會持續幾個小時,甚至幾天。解決的方法很簡單,mongodb 提供了兩種建索引的訪問,一種是 ...

oracle 外來鍵無索引導致鎖

摘自tom大師的語句,外來鍵不加索引 select table name,owner constraint name,cname1 nvl2 cname2,cname2,null nvl2 cname3,cname3,null nvl2 cname4,cname4,null nvl2 cname5,...