因为有时候线上出现用户交互响应慢,经分析是后端数据库耗时较长或甚至没有响应。此时就需要我们紧急处理:
多查看几次进程列表,观察可疑情况
show full processlist;
mysql -uroot -pdb193_root -e "show full processlist" |egrep -vi "sleep"
long_query_time = 2 #(超过2秒记录)
log_queries_not_using_indexes
log-show-queries = /data/3306/show.log #(文件目录)
在建立索引的时候要对表进行全表的扫描工作
在对建立索引的时候要对表进行加锁,因此应当注意操作在业务空闲的时候进行
建议停用服务(此表相关的)然后呢可以将表中数据转移到临时表,然后在空表上建立索引,完成之后再将数据重新insert到索引表中 ,这样会好些
其实,SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。*** 说白点就是,不是本次查询不使用缓存,而是本次查询结果不做为下次查询的缓存。*** 那在这里我们用它来干吗呢?
explain select SQL_NO_CACHE * from test1 where name = 'wesley'
当然是用这个标记来分析我们通过建立索引前后:查询、修改,删除等操作的性能是否提高,或者它的提高程度 。