mysql 慢查询日志

慢查询日志

定位执行较慢的查询语句方案,从而决定优化

这里写图片描述

参数说明
slow_query_log开启慢查询日志
slow_query_log_file日志位置

参数说明
long_query_time慢查询时间临界点/s
--开启慢查询
set global slow_query_log = 1;
--设置临界点 0.5s
set long_query_time = 0.5;
sql优化建议:
  • 并发性场景下的sql
    少用(不用)多表操作(subquery,join),将复杂的SQL拆分多次执行。如果查询很原子(很小),会增加查询缓存的利用率。
  • 大量数据的插入
    先关闭约束及索引,完成数据插入,再重新生成索引及约束。
--myisam:
--禁用索引约束
    Alter table tab disable keys; 
--启用
    Alter table tab enable keys; 
--innodb:
Drop index, drop constraint --要保留主键
Begin transaction|set autocommit=0;
--[数据本身已经按照主键值排序]
--大量的插入
Commit;
Add index, add constraint
Insert into tab values (), (), (), (), ();
--区分与每条记录的长度,以10量级为单位即可,不要过多。
--多次执行相同结构别忘了prepare预编译的执行方式。
  • 分页
    Limit offset, size;
    Limit 的使用,会大大提升无效数据的检索(被跳过)。
    应该使用条件等过滤方式,将检索到的数据尽可能精确定位到需要的数据上。
Limit size;
  • 获取随机字段
--Order by Rand()
select * from tab order by rand() limit 10;

上面的查询,会导致每条记录都执行rand(),成本很高!应该在客户端程序通过某种运算,先确定的随机主键,从数据表中获取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值