[問題] mysql 同一個table select lock

作者: liisi (小心一點)   2018-01-06 18:54:31
想請問一下版友
如果網站同時有1千人在讀取同一個table 是否會造成lock
我今天遇到這種情況 很多買家湧進商品頁面 打算搶單
因為搶單關係 很多人會狂按F5重整 (db就會一直去讀商品的table)
直到搶單按鈕一出現 馬上下訂單
結果時間一到 公司的網站當掉快20分鐘
MIS是說主機沒有問題 主要是db sql卡住
我查了一下 processlist
全都卡在 select 商品的table 或是和商品相關join到的table
我是把時間長的幾個process kill掉 才慢慢恢復正常
之前偶爾卡了幾秒 還不算嚴重
但是今天卻卡了20分鐘 整個被lock住 無法釋出
必須透過kill process才能恢復正常 囧rz..
但是像這種 select lock 要如何解決?
我看了一下內文 是有提到 WITH NOLOCK 但是好像是mssql才行
想請問mysql有方法可以預防這問題嗎?
作者: jeamie (jeamie)   2018-01-07 08:39:00
單純的select應該是不會鎖表,是不是有select...for update或其他更新操作先鎖定了導致其他查詢在等待,可以查tablelock的資訊出來看看忘記說,這是在innodb的情況下,如果是myisam就....
作者: liisi (小心一點)   2018-01-07 18:09:00
回樓上 是用innodb 沒有用for update但是我看processlist 卻是select卡住 我本來想說等下就好結果過了3分鐘 還是lock 我才直接kill process 囧rz當下我也很疑惑 為何select會卡住那麼久table lock資訊可以事後查嗎 還是要當下? 因為主機不歸我管

Links booklink

Contact Us: admin [ a t ] ucptt.com