mysql数据库调优篇章1--日志篇

news2025/1/11 21:01:13

目录

  • 1.认识数据库中日志的作用
  • 2.增加mysql数据库中my.ini 基本配置
  • 3.增加my.ini中参数配置
  • 4.查看已经执行过的sql语句过去执行时间
  • 5.找出慢查询的sql
  • 6.常用参数查询命令
  • 7.认识慢查询日志记录
  • 8.认识通用日志记录(记录增删改查操作)
  • 9.认识二进制文件binlog主要应用场景
  • 10.总结

SHOW VARIABLES LIKE ‘innodb_read_io_threads’;
SHOW VARIABLES LIKE ‘innodb_write_io_threads’;
SHOW VARIABLES LIKE ‘thread_cache_size’;
SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
show global status like ‘Thread%’;

1.认识数据库中日志的作用

  • 慢查询日志:记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
  • 通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令, 对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
  • 错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的 状态,从而对服务器进行维护。
  • 二进制日志:记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故 障时数据的无损失恢复。
  • 中继日志:用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。 从服务器通过读取中继日志的内容,来同步主服务器上的操作。
  • 数据定义语句日志:记录数据定义语句执行的元数据操作。

2.增加mysql数据库中my.ini 基本配置

查询这些变量
show VARIABLES like ‘%slow%’
show variables like ‘%log_bin%’;

# 配置mysql数据库存储数据的位置
datadir=E:/MySQL/Data
default_authentication_plugin=mysql_native_password
default-storage-engine=INNODB
# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

log-output=FILE
#开启通用查询日志记录 会记录SELECT、INSERT、UPDATE、DELETE 等操作
general-log=1
general_log_file="C:\ProgramData\MySQL\MySQL Server 8.0\Mytest-generaltest.log"
#开启慢查询日志  但是内存储  建议关闭  
slow-query-log=1
# 执行时间超过了这个10s阈值 
long_query_time=10
#指定慢查询日志中时间戳的格式。
log_timestamps = system
#指定慢查询日志文件路径
slow_query_log_file="C:\ProgramData\MySQL\MySQL Server 8.0\Mytest-slow.log"
# 开启记录错误日志
log-error="C:\ProgramData\MySQL\MySQL Server 8.0\Mytest-Err.err"
# Binary Logging.
#默认开启二进制日志文件  数据库默认开启的当数据库中的数据发生变化时,MySQL 会将这些变更操作记录到二进制日志中,以便于数据恢复、主从复制等操作。
log-bin="xxxxx-xxxx-bin"    

3.增加my.ini中参数配置

观察字段QUERY_SAMPLE_TEXT 具体sql执行语句
thread_cache_size 参数用于设置线程缓存的大小,它指定了服务器为处理客户端连接请求而预先分配的线程数目。
查询 show global status like ‘Threads_connected%’; 结果是525 峰值达到了500多,但是thread_cache_size才设置300,所以需要增加 数量,减少Threads_created 创建的数量
查询SHOW STATUS LIKE ‘Threads_connected’;结果的2倍或3倍

thread_cache_size=300    

指定在 MySQL 服务器接受新连接之前,允许在内核连接队列中等待的连接数目。它控制着 MySQL 服务器能够处理的最大连接数。

back_log=600

查询最大连接数,my.ini 中没有 max_connections参数,默认是151 ,可以手动配置
SHOW VARIABLES LIKE ‘max_connections’;

max_connections=1000

InnoDB 存储引擎的参数,用于配置数据库系统中读取和写入数据时所使用的 I/O 线程数量。
SHOW VARIABLES LIKE ‘innodb_read_io_threads’;
SHOW VARIABLES LIKE ‘innodb_write_io_threads’;
一般是当前服务器CPU核心数量的一半

innodb_read_io_threads = 8
innodb_write_io_threads = 8

查询 show global status like ‘Thread%’;
在这里插入图片描述
发现 Threads_created 记录的是数据库开启后一共创建的线程较多,说明 thread_cache_size设置的小了

thread_cache_size = 500

4.查看已经执行过的sql语句过去执行时间

SHOW VARIABLES LIKE ‘performance_schema’; 看是否开启
SELECT * FROM performance_schema.events_statements_summary_by_digest;
观察字段SCHEMA sql执行具体数据库名称
观察字段QUERY_SAMPLE_SEEN sql执行起始时间
观察字段 DIGEST_TEXT sql执行信息摘要
观察字段QUERY_SAMPLE_TEXT 具体sql执行语句
TIMER_WAIT:表示该 SQL 语句摘要的总执行时间(秒)。
LOCK_TIME:表示该 SQL 语句摘要在等待表锁上的时间(秒)。
QUERY_TIME:表示该 SQL 语句摘要的总查询时间(秒),包括等待时间。

5.找出慢查询的sql

找出执行时间较长的sql,设置sql

SHOW VARIABLES LIKE 'slow_query_log';

6.常用参数查询命令

SHOW VARIABLES;
show variables like 'profiling';

7.认识慢查询日志记录

# Time: 2024-05-09T15:10:58.145015+08:00
# User@Host: root[root] @ WIN-TLGUR8CSAR [192.168.1.2]  Id: 647518
# Query_time: 12.184095  Lock_time: 0.000198 Rows_sent: 213727  Rows_examined: 213727
use testbase;
SET timestamp=1715238717;
SELECT *  FROM `user`;

8.认识通用日志记录(记录增删改查操作)

2024-05-09T15:40:57.489468+08:00 7 Connect
2024-05-09T15:40:57.489592+08:00 7 Query SELECT @@skip_networking, @@skip_name_resolve, @@have_ssl=‘YES’, @@ssl_key, @@ssl_ca, @@ssl_capath, @@ssl_cert, @@ssl_cipher, @@ssl_crl, @@ssl_crlpath, @@tls_version
2024-05-09T15:40:57.490856+08:00 7 Quit
2024-05-09T15:41:34.690494+08:00 8 Connect root@localhost on using TCP/IP
2024-05-09T15:41:34.690780+08:00 8 Query SET NAMES utf8mb4
2024-05-09T15:41:34.691133+08:00 8 Init DB packing_test
2024-05-09T15:41:34.691212+08:00 8 Query SET PROFILING = 1
2024-05-09T15:41:34.691420+08:00 8 Query SHOW STATUS
2024-05-09T15:53:46.319141+08:00 12 Query SELECT COUNT(*) FROM performance_schema.threads

9.认识二进制文件binlog主要应用场景

在这里插入图片描述

10.总结

根据慢查询sql排查出查询时间较长的sql,导致长时间占用cpu
分析sql是否全查、是否索引失效、是否mysql参数配置是否合理,是否硬件资源不够用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1661344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0到1开发一个vue3+ts项目(一)

1. 环境配置 1.1 安装node 使用官方安装程序 前往 Node.js 官网:访问 Node.js 官网,下载适合你操作系统的安装程序。运行安装程序:下载完成后,双击安装程序并按照提示进行安装。验证安装:安装完成后,在终…

[uniapp] 配置ts类型声明

我想引进图片,但是报错 声明一下就行 TypeScript 支持 | uni-app官网 创建tsconfig.json文件,复制官网的配置 然后在随便一个目录下写一个随便名字的.d.ts文件 例如这样 保存就行 因为ts是默认扫描全部的,所以要按照官网的写法 把不必要的排除掉就行,免得浪费性能

DDS Blockset Shapes Demo

此示例演示DDS模块集Blockset形状演示应用程序。Shapes Demo是一个常见的数据分发服务(DDS)应用程序,用于介绍DDS概念,你可以使用它发布和订阅以简单形状(圆形、方形和三角形)表示的主题,并观察…

详解分布式锁

知识点: 单体锁存在的问题: 单体锁,即单体应用中的锁,通过加单体锁(synchronized或RentranLock)可以保证单个实例并发安全 单体锁是JVM层面的锁,只能保证单个实例上的并发访问安全 如果将单…

vue2结合element-ui实现TreeSelect 树选择功能

需求背景 在日常开发中,我们会遇见很多不同的业务需求。如果让你用element-ui实现一个 tree-select 组件,你会怎么做? 这个组件在 element-plus 中是有这个组件存在的,但是在 element-ui 中是没有的。 可能你会直接使用 elemen…

nginx配置文件和配置命令详解案例

一.nginx.conf配置结构 1.1配置结构图 1.2 nginx中配置nginx.conf配置内容 #user nobody; user root; # 表示worker进程是有root用户去执行的 worker_processes 2; events {# 默认使用epolluse epoll;# 每个worker链接最大数据worker_connections 1024; } http {include …

Java入门基础学习笔记14——数据类型转换

类型转换: 1、存在某种类型的变量赋值给另一种类型的变量; 2、存在不同类型的数据一起运算。 自动类型转换: 类型范围小的变量,可以直接赋值给类型范围大的变量。 byte类型赋值给int类型,就是自动类型转换。 pack…

【MySQL基本查询(下)】

文章目录 一、update案例 二、Delete案例注意:delete 全表数据的行为慎用!truncate 三、插入查询结果案例 四、了解一些函数1.count函数2.sum函数3. avg函数4.max函数5. min函数 五、group by子句的使用案例having和where 一、update 该关键字的功能就是…

基于SpringBoot的全国风景区WebGIS按省展示实践

目录 前言 一、全国风景区信息介绍 1、全国范围内数据分布 2、全国风景区分布 3、PostGIS空间关联查询 二、后台查询的设计与实现 1、Model和Mapper层 2、业务层和控制层设计 三、WebGIS可视化 1、省份范围可视化 2、省级风景区可视化展示 3、成果展示 总结 前…

C++ 抽象与封装

一 抽象 抽象实例:时钟 数据抽象: 具有表面当前时间的时、分、秒 行为抽象: 具有设置时间和显示时间两个最基本的功能。 抽象实例:人 数据抽象:姓名、年龄、性别等。 行为抽象: 生物属性:吃…

Cocos creator实现《战机长空》关卡本地存储功能

Cocos creator实现《战机长空》关卡本地存储功能 Cocos creator在开放小游戏过程中,经常会出现设置关卡,这里记录一下关卡数据本地存储功能。 一、关卡设置数据 假如我们有关卡数据如下, let settings [ { level: 1, // 第1关 score: 0,…

Java类加载器介绍

在Java中,类加载器是一种动态加载类的机制,它负责在运行时查找、加载和链接类文件。当Java应用程序需要创建某个类的对象时,类加载器会在运行时查找该类对应的.class文件,并将其加载到Java虚拟机中。Java类加载器通常分为三层&…

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-05-11 0…

系统架构设计师 - 计算机组成与体系结构(1)

计算机组成与体系结构 计算机组成与体系结构计算机结构 ★CPU 组成结构运算器组成控制器组成 计算机体系结构冯诺依曼结构哈弗结构 嵌入式芯片(了解) 存储系统 ★★★★概述Cache主存编址磁盘管理磁盘基本结构与存取过程磁盘优化分布存储磁盘管理 大家好…

C++:多态-重写和重载

重写(Override)和重载(Overload)是面向对象编程中常用的两个概念,它们虽然都涉及到方法的定义,但是在实现和使用上有着不同的特点。 重写(Override): 重写是指在子类中重…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先,确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件: cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在,您可以继续编辑它。如果不存在&#xff…

Go语言系统学习笔记(一):基础篇

1. 写在前面 公司的新业务开发需要用到go语言,虽然之前没接触过这门语言,但在大模型的帮助下,边看项目边写代码也能进行go的项目开发,不过,写了一段时间代码之后,总感觉对go语言本身,我的知识体…

【SRC实战】合成类小游戏外挂漏洞

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “以下漏洞均为实验靶场,如有雷同,纯属巧合” 合成类小游戏三个特点: 1、一关比一关难,可以参考“羊了个羊” 2、无限关卡无限奖励,可以参考“消灭星星…

BBS客户端服务器的编写

根据网络编程中的内容,我们本篇文章将讲解一个bbs通信的项目,首先让我们了解一下什么是bbs. 一、bbs介绍 BBS,即Bulletin Board System的缩写,中文译为“电子公告板系统”或“网络论坛”。它是一个在网络上进行信息交流和讨论的…

【科研】常用的实验结果评价指标(1) —— R2(R-square)是什么?

常用的实验结果评价指标(1) —— R2(R-square),可能为负数吗?! 提示:先说概念,后续再陆续上代码 文章目录 常用的实验结果评价指标(1) —— R2(R-square),可能…