MySQL-12-SQL优化

news2024/11/25 12:26:40

一、MySQL体系结构

1.1、体系结构

#

1.2、查询执行流程

参考:https://www.cnblogs.com/xfeiyun/p/15899990.html

1.3、组件说明

  • 管理工具:MySQL服务软件安装后提供的命令
  • 连接池:检查本机是否有空闲资源(线程,内存)处理当前的连接请求
  • SQL接口:把SQL命令传递给MySQL服务的进程处理(mysqld进程)
  • 分析器:检查执行的SQL命令是否有语法错误
  • 优化器:优化执行的SQL命令,使其能以最节省系统资源的方式执行
  • 查询缓存:存储数据库查询过的查询结果。缓存空间从系统的物理内存里自动划分出来的,
  • 存储引擎:自带的功能程序,用来处理表的处理器
  • 文件系统:数据盘

二、SQL优化

  • 查看监控信息,查看慢日志
  • SQL响应慢:检查网络带宽,查看硬件资源的使用情况(cpu,内存,磁盘io)

2.1、连接数查询

max_connections			#查看最大默认并发连接数,默认为151个
show global status like "max_used_connections";		#查看曾经最大的连接数量;
show full processlist;	#查看当前的进程;
kill id;		#删除进程
flush status;	#刷新、清零远程连接的值
show global status like "threads_connected"; #查看当前连接数

合理设置最大并发连接公式:有过的最大连接数/并发连接数=0.85

2.2、线程

thread_cache_size		#可以重复使用的线程数量,默认为9;指mysqld进程启动的时候
						#默认开启9个空闲线程等待客户端连接,加快连接速度,占用内存

table_open_chace		#指所有线程打开的表的数量总和,默认为2000,一个连接是一个线程
						#mysqld线程--->硬盘中的表--->内存--->硬盘

2.3、查询缓存相关

https://www.cnblogs.com/heruiguo/p/12603825.html
key_buffer_size			#索引缓存大小,默认为8M,适用于myisam,(索引好处就是给字段排队)						
sort_buffer_size		#为每个要排序的线程分配此大小的缓存空间(256k)
read_buffer_size		#为顺序读取表记录保留的缓存大小(128k)						

query_cache_type = 0|1|2  #查询缓存0:off,1:on(只要不超过限制就自动加入)
		#2:(DEMAND)添加缓存时必须添加sql_in_cache参数:select 字段列表 from 表 sql_in_cache;
mysql> show variables like "query_cache%";

query_cache_limit	1M # 允许 Cache 的单条 Query 结果集的最大容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 Cache
query_cache_size	1M #缓存所占用的内存空间大小
query_cache_min_res_unit 4k	#缓存在CPU时的最小单位
query_cache_type 		#类型
query_cache_wlock_invalidate	#查询缓存写锁无效,默认为关(产生写锁)
				#解读:当读和写同时发生在一个表时,为避免脏读,会产生写锁,
				此时读不到数据,等写操作完成后才能进行正常读

2.3、验证缓存:查看缓存统计信息

mysql> show global status like "qcache%"

Qcache_hits             | 0     #客户端查询,先从内存中的缓存开始查找,如果在缓存中找到,则+1
Qcache_inserts          | 1  	#客户端查询总次数
Qcache_lowmem_prunes		#查询缓存默认为8M,当缓存满时,就删一次,此值加1。此值越大,就说明查询缓存就越小
qcache_not_cached			#不让存入缓存的查询个数,数值越大,代表query_cache_limit越小

2.4、日志:

  • binlog日志
  • 错误日志:log-error=mysqld.log
  • 查询日志:记录所有的SQL命令读写操作
  • 慢查询日志:
2.4.1、查询日志相关
general-log					#开启查询日志,默认为  主机名.log
general-log-file=路径/名称	#此参数可以不指定
2.4.2、慢查询日志相关参数
slow_query_log				#开启慢查询日志,默认为主机名-slow.log
slow_query_log_file			#指定慢查询日志文件,可以不指定
long-query-time=10			#默认为10s,查询超过10s的查询记录在慢查询日志里边,包含10s
log-queries-not-using-indexes=1	#启用记录 未使用索引的查询,保存在慢日志里边
mysqldumpslow 慢日志名:统计并输出慢日志

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

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

相关文章

Geoffrey Hinton、姚期智、张钹、Sam Altman等专家共话AI安全与对齐丨2023智源大会议程公开...

6月9日,2023北京智源大会,将邀请AI领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,你准备好了吗?与会知名嘉宾包括,图灵奖得主Yann LeCun、OpenAI创始人Sam Altman、图灵奖得主Ge…

Linux教程——Linux和UNIX的关系及区别(详解版)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥&…

开始梳理大学课程体系(二)--万字数据结构总结上

数据结构总结 第一章 概述1.1 基本概念和术语1.2 数据结构1. 2.1 逻辑结构1.2.2 存储结构 1.3 数据类型和抽象数据类型1.3.1 数据类型1.3.2 抽象数据类型 1.4 算法和算法分析1.4.1 算法的定义及特性1.4.2 评价算法优劣的基本标准1.4.3 算法的时间复杂度1.4.4 算法的空间复杂度 …

chatgpt赋能python:用Python优化交通

用Python优化交通 作为一种功能强大的编程语言,Python已经被广泛应用于各个领域。交通领域也不例外。在交通领域,Python可以发挥重要作用,帮助优化交通运行,提高安全性和效率。 实时路况预测 Python可以通过机器学习算法来对实…

【Linux】进程与文件系统(详细解析)

文章目录 1.前言(提出问题)2.认识问题3.回顾c文件接口4.学习系统文件IOopen函数第一个参数第二个参数第三个参数函数的返回值 write函数read函数close函数 5.文件描述符 1.前言(提出问题) 在C语言阶段学习文件操作的时候&#xf…

基于PP-OCRv3的车牌检测和识别

本项目基于百度飞桨AI Studio平台进行实现,百度出品的深度学习平台飞桨(PaddlePaddle)是主流深度学习框架中一款完全国产化的产品,与Google TensorFlow、Facebook Pytorch齐名。2016 年飞桨正式开源,是国内首个全面开源…

【SpringMVC】| 域对象共享数据

目录 前期准备 域对象共享数据 一:向request域共享数据(五种方法) 1. 使用ServletAPI向request域对象共享数据(了解) 2. 使用ModelAndView向request域对象共享数据 3. 使用Model向request域对象共享数据 4. 使用…

chatgpt赋能python:Python代码怎么找?这里介绍几种方法

Python代码怎么找?这里介绍几种方法 在编写Python程序的时候,经常会遇到需要查找已有代码的情况。那么,在这里,我们将介绍几种查找Python代码的方法,希望能对大家有所帮助。 使用文本编辑器的查找功能 在大多数文本…

3.场(field)

目录 1.复习 2.引言 3.数量场 1.概念 2.例题 4.矢量场 1.概念 2.例题 5.坐标变换和坐标单位矢 1.坐标变换 2.单位矢 1.复习 2.引言 如果说矢量分析研究的是矢量的时间变化,那么场就是它的空间变化. 场是客观存在的,杨振宁先生在总结20世…

Spring Boot 3.1中如何整合Spring Security和Keycloak

在今年2月14日的时候,Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器。其中包括Spring Security和Spring Boot的适配器,这意味着今后Keycloak团队将不再提供针对Spring Security和Spring Boot的集成方案。但是,如此强大的Keycloak&…

数据库|TiDB 数据库大版本升级-基于TiCDC异机升级

作者:高文峰 | 神州数码云基地TiDB团队成员 目录 一、前言 二、升级架构图 三、升级流程 1.下游TiDB集群部署过程 2. 上游TiCDC节点的扩容 3. 上游数据全备恢复到下游 4. TiCDC启用正向同步任务 5. 应用停服务,tidb 无业务会话连接 6. 确认数据…

2023年6月跟产品开发专家学NPDP产品经理认证课到这里

NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。 课程从…

小车跑迷宫,如何完成?

先看视频1: 先看视频2: 要制作一个能顺利走到迷宫终点,并能按最短路径回来的小车,重中之重就是寻找其最短路径的算法,迷宫情况复杂多变,多个路口交错纵横,想要完美的找出最短路径并不容易&#…

事件相关功能磁共振波谱技术(fMRS)

导读 质子磁共振波谱(MRS)是一种非侵入性脑成像技术,用于测量不同神经化学物质的浓度。“单体素”MRS数据通常在几分钟内采集,然后对单个瞬态进行平均,从而测量神经化学物质浓度。然而,这种方法对更快速的神经化学物质的时间动态…

chatgpt赋能python:Python人脸身份识别:提高安全性和效率的先进技术

Python人脸身份识别:提高安全性和效率的先进技术 随着科技的发展,人类对于安全性和效率的需求逐渐增加。而人脸身份识别技术正是一个能够满足这一需求的先进技术。在过去的几年中,这种技术已经逐渐发展成为一种普及的安全措施,这…

串口组件:ZylSerialPort.NET 1.83 Crack

ZylSerialPort.NET 1.83 .NET 组件 库 ZylSerialPort.NET 是一个基于线程、事件驱动、异步/同步串口的.NET 组件库。 使用 ZylSerialPort.NET 组件可以轻松地通过串行端口连接与外部设备进行通信,例如调制解调器、条形码阅读器、GSM 模块等。 您也可以将它与 USB、…

Volatile、Synchronized、ReentrantLock锁机制使用说明

一、Volatile底层原理 volatile是轻量级的同步机制,volatile保证变量对所有线程的可见性,不保证原子性。 当对volatile变量进行写操作的时候,JVM会向处理器发送一条LOCK前缀的指令,将该变量所在缓存行的数据写回系统内存。由于缓…

DJ4-7 请求分页存储管理方式

目录 4.7.1 请求分页中的硬件支持 1、页表机制 2、缺页中断机构 4.7.2 内存分配策略和分配算法 1、最小物理块数的确定 2、物理块的分配策略 3、物理块的分配算法 4.7.3 调页策略 1、系统应当在何时把一个页面装入内存? 2、从何处调入页面?…

机器学习常识 12: SVM

摘要: 支持向量机 (support vector machine, SVM) 有很多闪光点, 理论方面有 VC 维的支撑, 技术上有核函数将线性不可分变成线性可分, 实践上是小样本学习效果最好的算法. 1. 线性分类器 如图 1 所示, 基础的 SVM 仍然是一个线性二分类器, 这一点与 logistic 回归一致. 图 1.…

MATLAB 之 隐函数绘图、图形修饰处理、图像处理与动画制作和交互式绘图工具

这里写目录标题 一、隐函数绘图1. 隐函数二维绘图3. 隐函数三维绘图 二、图形修饰处理1. 视点处理2. 色彩处理2.1 颜色的向量表示2.2 色图2.3 三维曲面图形的着色 3. 图形的裁剪处理 三、图像处理与动画制作1. 图像处理1.1 图像的读/写1.2 图像的显示 2. 动画制作2.1 制作逐帧动…