+ -
当前位置:首页 → 问答吧 → 大家看看数据库有什么问题,是不是表死锁了?

大家看看数据库有什么问题,是不是表死锁了?

时间:2011-12-05

来源:互联网

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 landmark_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 landmark_traceroute_R_jw1_l6 write |
| 1842 | root | localhost | TraceRoute | Sleep | 13 | | NULL |
| 1843 | root | localhost | TraceRoute | Query | 22 | Locked | lock table landmark_traceroute_R_jw1_l6 write |
| 1844 | root | localhost | TraceRoute | Sleep | 8 | | NULL |
| 1846 | root | localhost | TraceRoute | Query | 0 | NULL | show processlist

作者: jiaweiqq123   发布时间: 2011-12-05

锁定读SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE MODE

LOCK 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。

作者: yq510457   发布时间: 2011-12-05

lock table landmark_traceroute_R_jw1_l6 write

这个表加了写锁了。

作者: zuoxingyu   发布时间: 2011-12-05

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

作者: jiaweiqq123   发布时间: 2011-12-05

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

作者: rucypli   发布时间: 2011-12-05