[转]处理MySQL数据库出现大量Locked的一个案例
做为一款轻量级数据库软件,MySQL在使用过程中遇到访问速度慢,或者无法响应这类的问题,解决方式基本都有定式,一般第一反应都会是登录到MySQL, show processlist看看当前连接状态。
虽说简单,但show processlist显示的信息确实是相当有用,有一回,三思收到反馈说MySQL查询很慢,于是,赶紧登录到mysql中,执行show processlist查看当前连接信息:
mysql> show processlist;+--------+-------------+--------------------+-------+---------+-------+----------------------------------+----------------------------------------------+| Id | User | Host | db | Command | Time | State | Info |+--------+-------------+--------------------+-------+---------+-------+----------------------------------+----------------------------------------------+| 1 | system user | | NULL | Connect | 342266| Waiting for master to send event | NULL | | 2 | system user | | hdpic | Connect | 872 | Locked | UPDATE a SET STATE=0 WHERE ID=83752 | | 123890 | hdpic_read | 192.168.1.79:54910 | hdpic | Query | 1512 | Sending data | select z.ID,z.TITLE,z.CREATOR_USER_NICK,z.CREATOR_USER_IDEN,z.LASTEDITOR_TI | | 124906 | hdpic_read | 192.168.1.39:18844 | hdpic | Query | 845 | Locked | select * from a where ((ID = 78789) AND (STATE != 0)) | | 124912 | hdpic_read | 192.168.1.39:18862 | hdpic | Query | 845 | Locked | select * from a where ((ID = 16031) AND (STATE != 0)) | | 124914 | hdpic_read | 192.168.1.39:18865 | hdpic | Query | 837 | Locked | select * from a where ((ID = 39109) AND (STATE != 0)) | | 124917 | hdpic_read | 192.168.1.39:18875 | hdpic | Query | 833 | Locked | select * from a where ((ID = 16031) AND (STATE != 0)) |
[root@phpmysql02 data]# mysqladmin -ujss -p -S /data/3306/mysql.sock debugEnter password:
[root@phpmysql02 data]# tail -10 phpmysql02.err Thread database.table_name Locked/Waiting Lock_type2 hdpic.t_wiki_zutu Waiting - write Highest priority write lock123890 hdpic.t_wiki_zutu_category Locked - read Low priority read lock123890 hdpic.t_wiki_zutu_photo Locked - read Low priority read lock123890 hdpic.t_wiki_zutu Locked - read Low priority read lock124906 hdpic.t_wiki_zutu Waiting - read Low priority read lock
mysql> kill 123890;Query OK, 0 rows affected (0.00 sec)
mysql> show processlist;+--------+-------------+--------------------+-------+---------+--------+----------------------------------+------------------+| Id | User | Host | db | Command | Time | State | Info |+--------+-------------+--------------------+-------+---------+--------+----------------------------------+------------------+| 1 | system user | | NULL | Connect | 342390 | Waiting for master to send event | NULL | | 124906 | hdpic_read | 192.168.1.39:18844 | hdpic | Sleep | 1 | | NULL | | 124912 | hdpic_read | 192.168.1.39:18862 | hdpic | Sleep | 2 | | NULL | | 124914 | hdpic_read | 192.168.1.39:18865 | hdpic | Sleep | 1 | | NULL | | 124917 | hdpic_read | 192.168.1.39:18875 | hdpic | Sleep | 1 | | NULL | | 124919 | hdpic_read | 192.168.1.39:18877 | hdpic | Sleep | 2 | | NULL |