文章目錄

最近服务时不时的会卡顿,不知道什么原因。下班之后突然想到速度慢,一般都出在数据库上。于是想到查看MySQL链接数,网上查到执行show processlist;即可。

在卡顿时,查询结果中发现以下可疑连接,如下

1
2
3
 Waiting for table level lock | UPDATE `sku` SET  `view_num` = `sku`.`view_num` + 1 WHER |         0 |             0 |         1 |

Waiting for table level lock | SELECT `sku`.`id`, `sku`.`name`, `sku`.`dosage_form`, `sku`.`specs`, `sku`.`factory`, `sku`.`categor | 0 | 0 | 1 |

在淘宝的MySQL资料MySQL 锁问题最佳实践里找到’table level lock’的原因,是因为MyISAM,引发table level lock wait。查看建表语句,果然是MyISAM引擎, 将它转成InnoDB即可解决问题。

上面使用show processlist命令显示不完全,可以加上full, 即执行show full processlist

参考Converting Tables from MyISAM to InnoDB, 执行ALTER TABLE table_name ENGINE=InnoDB;即可转换。

文章目錄