是周期性的变化还是偶尔问题?
是服务器整体性能的问题, 还是某单条语句的问题?
具体到单条语句, 这条语句是在等待上花的时间,还是查询上花的时间.
监测并观察服务器的状态.
1:观察服务器状态, 一般用如下2个命令,Show status; Show processlist;
2:也可以通过druid对数据库监控进行观察
3:也可以通过记录慢查询日志观察
最好的优化:
不查询>表结构不合理>sql语句效率低>硬件
我们一般注重的是sql语句效率低。
Show processlist;
这个命令是显示当前所有连接的工作状态.
如果观察到以下状态,则需要注意
converting HEAP to MyISAM 查询结果太大时,把结果放在磁盘 (语句写的不好,取数据太多)
create tmp table 创建临时表(如group时储存中间结果,说明索引建的不好)
Copying to tmp table on disk 把内存临时表复制到磁盘 (索引不好,表字段选的不好)
locked 被其他查询锁住 (一般在使用事务时易发生,互联网应用不常发生)