数据库慢查询及其优化

本文介绍了数据库慢查询的概念,指查询时间超过设定阈值的语句,并提供了修改慢查询时间的语句。详细解析了MySQL慢查询的相关参数,如`slow_query_log`、`long_query_time`等,并展示了如何开启和配置慢查询日志。同时,讨论了最大连接数的查看与设置,建议理想比例为85%。最后,提到了常见的慢查询优化策略,包括合理使用索引和优化表结构。
摘要由CSDN通过智能技术生成

什么是数据库慢查询?

数据库慢查询,就是查询时间超过了我们设定的时间的语句。可以通过以下语句查看设定的时间:
在这里插入图片描述

默认的设定时间是10秒,也可以通过下面这个语句修改默认的设定时间:

set long_query_time=0.0001;

MySQL 慢查询的相关参数解释

slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭
log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。
log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。
log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql

慢查询日志配置

默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启,如下所示:

show variables like 'slow_query%'; -- 慢查询
show variables like 'long_query_time'; -- 查询时间设置
show variables like '%slow_query_log%';-- 查看慢查询的日志配置
SET GLOBAL slow_query_log = 'ON'; ---开启慢查询日志
show variables like 'log_queries_not_using_indexes'; --查看未使用索引的
set global log_queries_not_using_indexes=1; -- 未使用索引的查询也被记录到慢查询日志中
show global status like '%slow_queries%';-- 查询慢查询记录

最大连接数的查看与设置

查看最大连接数:

show variables like '%max_connections%'; -- 上限连接数
SHOW GLOBAL STATUS LIKE 'Max_used_connections' -- 服务响应的最大连接数

比较理想的设置:Max_used_connections / max_connections * 100% ≈ 85%,即最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。

修改最大连接数:

set GLOBAL max_connections = 500;

列出MySQL服务器运行各种状态值:

SHOW GLOBAL STATUS;

常见的慢查询优化

(1)索引没起到作用的情况(或者未加索引)

  1. 使用LIKE关键字的查询语句。在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为“%”,索引不会起作用。只有“%”不在第一个位置索引才会起作用。
  2. 使用多列索引的查询语句。MySQL可以为多个字段创建索引,一个索引最多可以包括16个字段。对于多列索引,只有查询条件使用了这些字段中的第一个字段时,索引才会被使用。

(2)优化数据库表的结构

  1. 将字段很多的表拆解成多个表。
  2. 设置中间表。
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值