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

目录

  • 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参数配置是否合理,是否硬件资源不够用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多维点分布的均匀性评估方法(NDD和Voronoi 图法)

评估多维点分布的均匀性是统计学和数据科学中的一个重要问题,特别是在模拟、空间分析和样本设计等领域。下面,我将详细介绍2种评估多维点分布均匀性的方法,包括它们的数学原理、实现公式以及各自的优缺点。 1. 最近邻距离法(Neare…

CTF例题和知识点

[ACTF2020 新生赛]Include 打开靶机发现一个超链接,点击之后出现一段话 “Can you find out the flag?” 查看源码注入,无果 仔细看url,发现有flag.php 根据题目提示,该题应该是文件包含漏洞,因此可以判断出此题是PH…

通俗的理解网关的概念的用途(三):你的数据包是如何到达下一层的

其实,这一章我写不好,因为这其中会涉及到一些计算和一些广播等概念,本人不善于此项。在此略述,可以参考。 每台设备的不同连接在获得有效的IP地址后,会根据IP地址的规则和掩码的规则,在操作系统和交换机&a…

自动控制原理学习--平衡小车的控制算法(三)

上一节PID的simulin仿真,这一节用LQR 一、模型 二、LQR LQR属于现代控制理论的一个很重要的点,这里推荐B站的【Advanced控制理论】课程(up主DR_CAN),讲得很好,这里引用了他视频里讲LQR的ppt。 LQR属于lo…

车载电子电器架构 —— 应用软件开发(中)

车载电子电器架构 —— 应用软件开发(中) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

医疗行业如何提升Windows操作系统登录的安全性

医疗行业使用账号和密码登录Windows系统时,可能会遇到一些痛点,这些痛点可能会影响工作效率、数据安全和用户体验。以下是一些主要的痛点: 1. 密码管理复杂性:医疗行业通常涉及大量的敏感数据和隐私信息,因此密码策略…

非模块化 Vue 开发的 bus 总线通信

个人感觉,JavaScript 非模块开发更适合新人上手,不需要安装配置一大堆软件环境,不需要编译,适合于中小项目开发,只需要一个代码编辑器即可开发,例如 vsCode。网页 html 文件通过 script 标签引入 JavaScrip…

学习笔记——字符串(单模+多模+练习题)

单模匹配 Brute Force算法(暴力) 算法思想 母串和模式串字符依次配对,如果配对成功则继续比较后面位置是否相同,如果出现匹配不成功的位置,则j(模式串当前的位置)从头开始,i&…

中北大学软件学院javaweb实验二JSP应用开发实验报告

实验时间 2024年4月 25 日17时至 22 时 学时数 4 1.实验名称 实验2:JSP应用开发(2学时) 2.实验目的 (1)学会编写和运行简单的JSP页面,理解其运行原理; (2)学会使用JSP的声明、表达式、脚…

中国211大学全部排名一览表

211大学是指中国教育部实施的名为“211工程”的高等教育发展战略中被选为重点支持的高等院校。这个名称来源于项目的启动背景和目标:“211”中的“21”代表21世纪,意味着该项目面向21世纪的中国高等教育发展;“1”则意指要重点建设大约100所左…

126.删除链表的倒数第N个节点(力扣)

题目描述 代码解决(双指针) /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, Li…

C语言实现扫雷游戏完整版

游戏介绍: 目录 游戏介绍: 游戏框架: 游戏具体功能实现: 棋盘的定义: 棋盘初始化: 棋盘打印: 棋盘布置雷: 棋盘扫雷: 爆炸展开一片: 获取周围八个…

画出入学管理系统的顶层图和1层图

(学校作业) 题目如下: 某培训机构入学管理系统有报名、交费和就读等多项功能,下面是对其各项功能的说明: 1、报名:由报名处负责,需要在学员登记表上进行报名登记,需要查询课…

Kettle连接Mysql数据库时报错——Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found

一、问题描述 当我们使用ETL工具Kettle需要连接Mysql数据库进行数据清洗操作,在配置好Mysql的连接串内容后,点击【测试】按钮时报错【错误连接数据库 [MysqlTestConnection] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to conne…

记一次DNS故障导致用户无法充值的问题(下)

上一篇说到DNS故障导致无法充值,后来我们通过拨测发现业务域名的解析目标地址被解析到了【127.0.0.1】IP。 1、联系阿里云厂商,通过沟通,阿里云反馈我们的域名被XX省通管单位封禁了,导致解析到了不正确的地址。 2、为了解决用户问…

idea运行SpringBoot项目爆红提示出现:Java HotSpot(TM) 64-Bit Server VM warning...让我来看看~

在运行SpringBoot项目的时候,发现总有这个警告提示出现,有点强迫症真的每次运行项目都很难受啊!那么今天便来解决这个问题! 先来看一下提示内容:Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none an…

多目标跟踪入门介绍

多目标跟踪算法 我们也可以称之为 Multi-Target-Tracking (MTT)。 那么多目标跟踪是什么? 不难看出,跟踪算法同时会为每个目标分配一个特定的 id 。 由此得出了目标跟踪与目标检测的区别(似乎都是用方框来框出目标捏…

树与二叉树之间的转换

树转化成二叉树:兄弟相连留长子 1.加线:在兄弟之间加一条线 2.抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系 3.旋转:以树的根结点为轴心,将整树顺时针转45 二叉树转化成为树…

云衔科技成为卓豪Zoho中国区代理商,开启智能化企业管理新篇章

每一家企业数字化转型,都在寻求通过技术创新实现业务的飞跃。为了更好地服务于中国企业的数字化转型需求,云衔科技荣幸宣布正式成为卓豪Zoho中国区代理商,这一强强联合将为市场带来全新的数字化解决方案与服务体验,共同开启中国企…

Oracle -在线回缩表

conn scott/tiger DROP TABLE EMP1 PURGE; CREATE TABLE EMP1 AS SELECT * FROM EMP; alter table emp1 enable row movement; -- 启动回缩特性 insert into emp1 select * from emp1; / / commit; -- 增加到14000行 -- 分析表的结构 analyze table emp1 comput…