mysql优化的话,我一般会这样入手,从一个接口响应时间来说,如果响应时间超过1s,肯定是要优化的,保证网络问题ok的情况下,可进行如下调试:

1.先定位响应时间长的代码段可逐行注释,直接返回,如果当打开某一行代码时,发现速度明显变慢,即可确定当前代码拖慢了时间。

为什么不直接看慢日志呢?

因为程序中可能是各种小查询组合起来的,慢日志中看不到超时的sql语句

2.慢日志定位sql语句开启慢日志,修改my.cnf文件#安全模式修改,兼容老版本group

[mysqld]

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

#慢日志

slow_query_log=1

slow_query_log_file=/var/log/mysql/mysql-slow.log

long_query_time = 1 #单位s,可设置为0.1上线前推荐

将慢日志参数long_query_time改为0,保证记录所有sql语句,然后走一遍测试环境,之后查看慢日志文件,来辅助修改和优化索引项查看慢日志文件记录的sqlmysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). started with:

Tcp port: 0 Unix socket: /var/run/mysqld/mysqld.sock

Time Id Command Argument

# Time: 2020-02-25T15:25:10.543384Z

# User@Host: root[root] @ [172.23.0.1] Id: 2

# Query_time: 1.352161 Lock_time: 0.033811 Rows_sent: 10000 Rows_examined: 10000

use bbs_base;

SET timestamp=1582644310;

select `id`, `name`, `avatar` from `users` where `users`.`id` in (1520076, 1520081, 1520090);使用pt-query-digest工具分析

执行命令:/usr/local/percona-toolkit/bin/pt-query-digest ~/docker-volumes/mysql/log/mysql-slow.log

显示结果:# Query 2: 0.06 QPS, 0.03x concurrency, ID 0x3EE6E67A63457E7BF53837C718CB40F0 at byte 90923

# This item is included in the report because it matches --limit.

# Scores: V/M = 0.38

# Time range: 2020-02-25T16:02:46 to 2020-02-25T16:03:20

# Attribute pct total min max avg 95% stddev median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count 40 2

# Exec time 32 1s 236ms 890ms 563ms 890ms 462ms 563ms

# Lock time 0 209us 79us 130us 104us 130us 36us 104us

# Rows sent 49 19.53k 9.77k 9.77k 9.77k 9.77k 0 9.77k

# Rows examine 6 19.53k 9.77k 9.77k 9.77k 9.77k 0 9.77k

# Query size 0 410 205 205 205 205 0 205

# String:

# Databases bbs_base

# Hosts 172.24.0.1

# Users root

# Query_time distribution

# 1us

# 10us

# 100us

# 1ms

# 10ms

# 100ms ################################################################

# 1s

# 10s+

# Tables

# SHOW TABLE STATUS FROM `bbs_base` LIKE 'topics'\G

# SHOW CREATE TABLE `bbs_base`.`topics`\G

# EXPLAIN /*!50100 PARTITIONS*/

select `id`, `title`, `excerpt`, `user_id`, `category_id`, `reply_count`, `view_count`, `create_time` from `topics` where `delete_time` = 0 and ((`category_id` = 1)) order by `id` desc limit 10000 offset 0\G

3.小结

本章讲了,如何开启慢日志,查看慢日志,还简单介绍了慢日志分析工具,pt-query-digest,还说到在上线前要做的一件很重要的事情,通过修改参数long_query_time = 0,记录所有sql,来反过来辅助你修改和优化索引,下一次更新,将介绍slow.log中每一行的意思,good luck 待续...

mysql中起飞到达城市查询_让mysql慢慢起飞 - 初识慢日志相关推荐

  1. mysql中起飞到达城市查询_SQL航空网的几个航班查询题:

    表结构如下: flight{flightID,StartCityID ,endCityID,StartTime} city{cityID, CityName) 实验环境: create table c ...

  2. mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  3. mysql中要创建choose数据库_在MySQL中要创建choose数据库,应该使用命令“crea

    在MySQL中要创建choose数据库,应该使用命令"crea 在MySQL中要创建choose数据库,应该使用命令"createtablechoose;" 血压调节实验 ...

  4. mysql 变量作表名查询_使用MySQL函数变量作为表名查询

    我需要有一个表中增加一定的ID(如AUTO_INCREMENT)函数使用MySQL函数变量作为表名查询 我有水木清华这样 DELIMITER $$ DROP FUNCTION IF EXISTS `G ...

  5. mysql中engine是什么意思_请问mysql中ENGINE=MyISAM代表什么意思?

    2015-08-27 回答 1/isam isam是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,isam执行读取操作的速度很快,而且不 ...

  6. mysql分组和where条件查询_【MySQL】:分组查询where和having

    分组查询 之前学习聚合函数,知道聚合函数在默认情况下,将会把所有的记录当成一组,让我们在对列求值,计算时更方便了一些. 但是,在某些情况下,我们需要显式地对记录进行分组,使用的是group by [c ...

  7. mysql中innodb的工作原理_解读MySQL的InnoDB引擎日志工作原理

    当你使用UPDATE, INSERT, DELETE语句更新数据的时候,你就改变了两个地方的数据:log buffer和data buffers.Buffers是固定长度的内存块,通常是512字节. ...

  8. mysql 中英按字母排序_利用MySQL数据库来处理中英文取首字母排序

    很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求.  这个很方便, 很清晰, 如果不说性能如何 ...

  9. mysql怎么子查询_在mysql中如何进行子查询?

    在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT.UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为"WHERE (另 ...

最新文章

  1. java+yeild+sleep_Java并发编程--yield sleep和wait的区别
  2. 【vue-router②】使用导航守卫控制页面前进刷新,后退缓存
  3. the fair-sounding
  4. redis安装后提示权限问题ERR operation not permitted
  5. 怎么取html网页中的样式,从建站到拿站 -- HTML和CSS基础
  6. 回声消除的昨天、今天和明天
  7. 在wdos系统下搭建Dns服务器
  8. (05)FPGA内部资源
  9. linux vi路径配置,Linux 下 Vi 配置文件 .vimrc 文件
  10. 移动App测试中Android测试和IOS测试有啥区别
  11. 从拉新、促活/留存和营收说起,做运营到底是在做什么?
  12. dnf时装补丁教程_DNF时装补丁制作教程
  13. iosSelect插件 H5中实现iOS的select下拉联动效果
  14. php生成二维码文字图片海报
  15. 蓝牙电话/耳机和蓝牙音乐profile
  16. OFDM学习、编程实现
  17. 荣耀note10鸿蒙os,荣耀Note20最新确认:7000mAh+双6400万+鸿蒙OS,售价感人
  18. 打字速度对编程的影响大吗?
  19. [附源码]Python计算机毕业设计餐厅订餐系统
  20. ASP源码:马克斯4.0内核的DM456动漫电影网站整站源码

热门文章

  1. redis命令执行流程分析
  2. tomcat加上了https后访问不了_西部数码使用指南:部署https后访问提示存在安全隐患的排查解决方法...
  3. python文件分块读取_Python多进程分块读取超大文件的方法
  4. flutter从0到1构建大前端应用 pdf_推荐前端热门GitHub代码库「值得收藏」
  5. c语言生产者与消费者实验报告,生产者和消费者实验报告.doc
  6. 原生JS大揭秘—数据类型
  7. ABBYY FineReader 12PDF选项卡之图像及文字设置
  8. 1748. The Most Complex Number/LG的数学计划~~~持续更新ing(反素数求解)
  9. Gradle Issue: OutOfMemoryError: PermGen space
  10. 在VC资源文件中加入声音资源