MySQL---优化&日志

2023-09-21 11:08:47

目录

一、MySQL优化

3、mysql  server上的优化 

3.1、MySQL查询缓存

 3.2、索引和数据缓存

3.2、线程缓存

二、MySQL日志

2.1、redo log   重做日志

2.2、undo log 回滚日志

 2.3、错误日志

2.4、查询日志

2.5、二进制日志

2.5.1、基于binlog数据恢复实践操作

六、慢查询日志


一、MySQL优化

1、SQL和索引的优化

2、应用上的优化

3、mysql  server上的优化 

3.1、MySQL查询缓存

MySQL 的查询缓存是把 select 查询语句上一次的查询结果记录下来放在缓存当中,下一次再查询相同内 容的时候,直接从缓存中取出
来就可以了,不用再进行一遍真正的SQL 查询。但是当两个 select查询中 间出现insert,updatedelete 语句的时候,查询缓存就会
清空 查询缓存适用更新不频繁的表 ,因 为当表更新频繁的话,查询缓存也总是被清空,过多的查询缓存的数据添加和删除,就会影
响MySQL的 执行效率,还不如每次都从磁盘上查来得快(缓存指的就是一块内存,内存I/O比磁盘 I/O 快很多)。 可以在MySQL 上通
过以下命令,来查看查询缓存的设置:

 通过show status命令,可以查看MySQL查询缓存的使用状况,如下:

 3.2、索引和数据缓存

主要指的就是 innodb_buffffer_pool_size 配置项,从名字上就能看到,该配置项是针对 InnoDB 存储引擎 起作用的,这个参数定InnoDB
存储引擎的表数据和索引数据的最大内存缓冲区大小。 innodb_buffffer_pool_size是同时为数据块和索引块做缓存,这个值设得越高,
访问表中数据需要的磁 盘 I/O 就越少

innodb_buffer_pool_size=512M

3.2、线程缓存

主要指配置文件中 thread_cache_size 配置项。给大家讲过 MySQL Server 网络模块采用经典的 I/O 复用
+ 线程池模型,之所以引入线程池,主要就是为了在业务执行的过程中,不会因为临时创建和销毁线
程,造成系统性能降低,因为线程的创建和销毁是很耗费性能的,所以线程池就是在业务使用之前,先
创建一组固定数量的线程,等待事件发生,当有 SQL 请求到达 MySQL Server 的时候,在线程池中取一
个线程来执行该 SQL 请求就可以了,执行完成后,不销毁线程,而是把线程再归还到线程池中,等待下
一次任务的处理( MySQL 会根据连接量,自动加大线程池的数量)。

thread_cache_size=10
配置完 thread_cache_size ,重启 MySQL Server 服务生效。

二、MySQL日志

2.1、redo log   重做日志

redo log :重做日志,用于记录事务操作的变化,确保事务的 持久性 redo log 是在事务开始后就开始
记录,不管事务是否提交都会记录下来,在异常发生时(如数据持久化过程中掉电), InnoDB 会使用
redo log 恢复到掉电前的时刻,保证数据的完整性。

 MySQL执行的时候都有缓存的辅助,不可能直接和磁盘打交道的

innodb_log_buffffer_size 默认是 16M ,就是 redo log 缓冲区的大小,它随着事务开始,就开始写 redo
log ,如果事务比较大,为了 避免事务执行过程中花费过多磁盘IO 可以设置比较大的 redo log缓存,节省磁盘IO

2.2、undo log 回滚日志

undo log :回滚日志,保存了事务发生之前的数据的一个版本,用于事务执行时的回滚操作,同时也是
实现多版本并发控制( MVCC )下读操作的关键技术。
DB_TRX_ID: 事务 ID                      DB_ROLL_PTR: 回滚指针

 2.3、错误日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程
中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日
志。
mysqld 使用错误日志名 host_name.err(host_name 为主机名 ) 并默认在参数 DATADIR( 数据目录 ) 指定
的目录中写入日志文件。

2.4、查询日志

查询日志记录了客户端的所有语句。由于上线项目 sql 特别多,开启查询日志 IO 太多导致 MySQL 效率
低,只有在调试时才开启,比如通过查看 sql 发现热点数据进行缓存。

mysql> show global variables like "%genera%";

2.5、二进制日志

二进制日志 (BINLOG) 记录了所有的 DDL( 数据定义语言 ) 语句和 DML( 数据操纵语言 ) 语句,但是不包括
数据查询语句。语句以 事件 的形式保存,它描述了数据的更改过程。 此日志对于灾难时的数据恢复起
着极其重要的作用。
两个重要的应用场景:主从复制、数据恢复
查看 binlog mysql> show binary logs;
通过 mysqlbinlog 工具( mysql 原生自带的工具)可以快速解析大量的 binlog 日志文件,如:
shell> mysqlbinlog --no-defaults --database=school --base64-output=decode-rows
-v --start-datetime='2021-05-01 00:00:00' --stop-datetime='2021-05-10 00:00:00'
mysql-bin.000001 | more

2.5.1、基于binlog数据恢复实践操作

六、慢查询日志

MySQL 可以设置慢查询日志,当 SQL 执行的时间超过我们设定的时间,那么这些 SQL 就会被记录在慢查
询日志当中,然后我们通过查看日志,用 explain 分析这些 SQL 的执行计划,来判定为什么效率低下,是
没有使用到索引?还是索引本身创建的有问题?或者是索引使用到了,但是由于表的数据量太大,花费
的时间就是很长,那么此时我们可以把表分成 n 个小表,比如订单表按年份分成多个小表等。
慢查询日志相关的参数如下所示:

更多推荐

【数据结构-树】红黑树

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kuan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kaf

创造音乐的无限可能——Ableton Live 11 Suite for Mac音乐制作软件

如果您是一位音乐创作者,那么AbletonLive11SuiteforMac将是您实现创意的完美伴侣。作为一款全面且强大的音乐制作软件,它为您提供了一系列令人惊叹的工具和功能,帮助您打造出独一无二的音乐作品。AbletonLive11SuiteforMac是一款为专业音乐制作而设计的软件。它具备直观、灵活的界面,使您能

麒麟信安参编的两项云计算团体标准发布!助推云计算产业高质量发展

近日,由中国电子技术标准化研究院主办,全国信标委云计算和分布式平台分委会、全国信标委云计算标准工作组、云计算标准与应用工业和信息化部重点实验室承办的第十二届云计算标准和应用大会在北京举办。本次大会上,麒麟信安起草参编的《信息技术云计算智能云服务用户体验度量模型》《信息技术云计算边缘云协同技术要求》两项团体标准正式发布!

LabVIEW应用开发——前面板和程序框图

上篇我们讲述了LabVIEW的安装并且新建了一个VI程序成功运行,这篇我们详细了解界面上一些工具、属性和层次结构。LabVIEW安装我们双击打开上次创建的.vi文件。这时候我们发现只有前面板,程序框图界面不见了,我们需要使用Ctrl+E或者在Windows-->ShowBlockDiagram选项中把程序框图调出来。而

科技活动类型

声明本文是学习GB-T42776-2023科技评估分类.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件确立了科技评估的分类原则,描述了分类方法,规定了编码方法、分类与代码。本文件适用于科技评估的规划、设计、委托、组织、实施、管理、研究、培训和信息化等相关活动。2规范性引用文件下列文件中

MYSQL索引——B+树讲解

B-/B+树看MySQL索引结构B-树B-树,这里的B表示balance(平衡的意思),B-树是一种多路自平衡的搜索树.它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是B-树的简化图.B-树有如下特点:所有键值分布在整颗树中;任何一个关键字出现且只出现在一个结点中;搜索有可能在非叶子结点结束

睿趣科技:抖音开一家网店大概什么时候回本

随着移动互联网的迅猛发展,社交媒体平台如抖音成为了商家推广产品和服务的热门渠道之一。许多人都希望能够通过在抖音上宣传自己的产品,甚至考虑开一家网店,但回本的时间是一个关键问题。本文将探讨抖音开一家网店大概什么时候回本的问题。首先,回本时间的长短与多种因素有关,包括产品的类型、市场竞争、推广策略等。一般来说,如果你的产品

性能测试之压力测试

文章目录一.基本介绍二.性能指标三.下载安装JMeter1.下载安装包2.启动JMeter四.使用JMeter1.模拟用户请求2.填写测试地址3.接收测试结果4.结果解释一.基本介绍压力测试考察当前软硬件条件下系统所能承受的最大负荷并找到系统瓶颈所在。压测是为了系统在线上的处理能力和稳定性维持在一个范围内。压力测试可以

Mysql——压缩包方式安装教程

一.Mysql压缩包下载方式zip版(5.7及8.0)的下载需到官方网站下载,不同版本对应能安装在不同的操作系统下,本次介绍的是mysql-8.0.30-winx64在win10下的安装方式。下载网址:MySQL::DownloadMySQLCommunityServer二.Mysql的安装流程1.下载压缩包至本机目录

DBAPI插件开发指南

DBAPI插件开发指南插件市场您可以去插件市场下载插件插件的作用DBAPI的插件分4类,分别是数据转换插件、缓存插件、告警插件、全局数据转化插件缓存插件对执行器结果进行缓存,比如SQL执行器,对查询类SQL,sql查询结果进行缓存,这样避免频繁的查询数据库,对数据库造成压力。缓存逻辑由用户自己编写,用户可以缓存到red

【linux基础(七)】Linux中的开发工具(下)--make/makefile和git

💓博主CSDN主页:杭电码农-NEO💓⏩专栏分类:Linux从入门到开通⏪🚚代码仓库:NEO的学习日记🚚🌹关注我🫵带你学更多操作系统知识🔝🔝Linux中的开发工具1.前言2.make和makefile介绍3.make和makefile再理解4.伪目标的定义以及性质5.文件的三个属性6.makefile推

热文推荐