mysql> show   processlist;
+------+------+-----------+------------+---------+------+--------+-----------------------------------------------+
| Id   | User | Host      | db         | Command | Time | State  | Info                                          |
+------+------+-----------+------------+---------+------+--------+-----------------------------------------------+
| 1816 | root | localhost | TraceRoute | Sleep   |    8 |        | NULL                                          |
| 1817 | root | localhost | TraceRoute | Sleep   |   25 |        | NULL                                          |
| 1818 | root | localhost | TraceRoute | Sleep   |    6 |        | NULL                                          |
| 1819 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1820 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1821 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1822 | root | localhost | TraceRoute | Sleep   |   10 |        | NULL                                          |
| 1823 | root | localhost | TraceRoute | Sleep   |   22 |        | NULL                                          |
| 1824 | root | localhost | TraceRoute | Sleep   |   15 |        | NULL                                          |
| 1825 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1826 | root | localhost | TraceRoute | Sleep   |   24 |        | NULL                                          |
| 1827 | root | localhost | TraceRoute | Sleep   |   28 |        | NULL                                          |
| 1828 | root | localhost | TraceRoute | Sleep   |   22 |        | NULL                                          |
| 1829 | root | localhost | TraceRoute | Query   |   31 | Locked | lock table land_traceroute_R_jw1_l6 write |
| 1830 | root | localhost | TraceRoute | Sleep   |   22 |        | NULL                                          |
| 1831 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1832 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1833 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1834 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1835 | root | localhost | TraceRoute | Sleep   |   24 |        | NULL                                          |
| 1836 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1837 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1838 | root | localhost | TraceRoute | Sleep   |   31 |        | NULL                                          |
| 1839 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1840 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1841 | root | localhost | TraceRoute | Query   |   31 | Locked | lock table land_traceroute_R_jw1_l6 write |
| 1842 | root | localhost | TraceRoute | Sleep   |   13 |        | NULL                                          |
| 1843 | root | localhost | TraceRoute | Query   |   22 | Locked | lock table land_traceroute_R_jw1_l6 write |
| 1844 | root | localhost | TraceRoute | Sleep   |    8 |        | NULL                                          |
| 1846 | root | localhost | TraceRoute | Query   |    0 | NULL   | show   processlist                           

解决方案 »

  1.   

    锁定读SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE MODELOCK TABLES和UNLOCK TABLES语法
    LOCK TABLES
        tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
        [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...
    UNLOCK TABLES
    LOCK TABLES可以锁定用于当前线程的表。如果表被其它线程锁定,则造成堵塞,直到可以获取所有锁定为止。UNLOCK TABLES可以释放被当前线程保持的任何锁定。当线程发布另一个LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含地解锁。表锁定只用于防止其它客户端进行不正当地读取和写入。保持锁定(即使是读取锁定)的客户端可以进行表层级的操作,比如DROP TABLE。
      

  2.   

    lock table land_traceroute_R_jw1_l6 write这个表加了写锁了。
      

  3.   

    | Table_locks_immediate             | 251676     |
    | Table_locks_waited                | 168622 
    现在的状况是:多线程对同一个表加写锁,有4个被多线程写的锁,有一个没发生死锁,有三个发生了死锁,
    解决方法:加排他锁能解决么?
      

  4.   

    有root登陆数据库的人执行了lock table land_traceroute_R_jw1_l6 write
      

  5.   

    sleep那么多线程应该是死锁了,Table_locks_waited | 168622  
    lock table tablename write;
    换成排他锁试试?
      

  6.   

    sleep不是死锁,哥们别误导人。
      

  7.   

    如果Table_locks_waited的值比较高,则说明存在着较严重的表级锁争用情况。
      

  8.   

    1.你使用的引擎是不是MyISAM?若是检查下是不是加锁没释放,执行下unlock 解锁
    2.若是非MyISAM引擎,也即InnoDB引擎 请执行下SHOW InnoDB STATUS\G 查看是那个事务先加锁,导致后面想继续加锁等待总体建议:先kill掉肇事的事务线程...
      

  9.   

    本来用的是MyISAM但是执行unlock之后还是不行,后来考虑到很多插入操作换成了InnoDB引擎,实验后还是不行,仍然有很多的线程等锁,最后老师建议不加锁。先插入,后期再对表进行修复。应该能解决我的问题