[问题] 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