慢查询居然记录着我有锁表行为。。但是我并没有进行写的操作。。求解。。
# Query_time: 1.990227  Lock_time: 0.636004 Rows_sent: 1  Rows_examined: 2202
use wwtwosal_expertor;
SELECT COUNT(*) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_special ps ON (p.product_id = ps.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p.product_id IN (SELECT p2c.product_id FROM product_to_category p2c WHERE p2c.category_id = '66')

解决方案 »

  1.   

    这是因为其他对该表的写操作导致你的select被锁了的原因吧
      

  2.   

    对READ,MySQL使用的锁定方法原理如下:如果在表上没有写锁定,把一个读锁定放在它上面。 
    否则,把锁请求放在读锁定队列中。 
    -------------------------------------------------------
    上面内容是Mysql的参考手册里面内容,实践不多,但是对于最下面的那句:锁请求放在锁队列。
    explain看下。
    关注此贴。
      

  3.   

    MyISAM读是会有锁的,但是那个是共享锁来的..不存在锁表啊