目录
数据库实例本身影响
MySQL数据库本身就有很大的压力,导致数据库服务器CPU占用率很高或ioutil(IO利用率)很高,这种情况下所有语句的执行都有可能变慢。
查询长时间不返回
select * from t where id=1;
等MDL锁
使用show processlist命令查看Waiting for table metadata lock的示意图。出现这个状态表示的是,现在有一个线程正在表t上请求或者持有MDL写锁,把select语句堵住了。
等flush
等行锁
select * from t where id=1 lock in share mode;
select * from t sys.innodb_lock_waits where locked_table=`'test'.'t'`\G
查询慢
select * from t where c=50000 limit 1;
如果c字段没有加索引,只能走id主键顺序扫描,因此需要扫描5万行。
update c=c+1 where id =1;//执行10万次
//这个需要查很长的undo log
select * from t where id=1;
//这个读当前数据,很快
select * from t where id=1 lock in share mode;