当前位置: 首页 > news >正文

MySQL篇

一、在MySQL中如何定位慢查询:

1.使用开源工具:

调试工具:Arthas

运维工具:Prometheus、Skywalking

2.MySQL自带的慢日志:

慢查询日志记录了所有执行时间超过指定参数(long_query_time单位为秒,默认值为10)的所有SQL语句的日志,如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

a.slow_query_log=1:开启MySQL慢日志查询开关

b.long_query_time=2:设置慢日志的时间为2秒,SQL语句执行时间超过2秒就会被视为慢查询,记录慢查询日志

配置完毕后,通过指令重新启动MySQL服务器进行测试并查看慢日志文件中的记录信息

二、某条SQL语句执行很慢,如何分析?

可以使用EXPLAIN或者DESC命令获取MySQL如何执行SELECT语句的信息:

EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件

possible_key:当前sql可能会使用到的索引

key:当前sql实际命中的索引

key_len:索引占用的大小

通过key和key_len查看是否可能会命中索引

Extra:额外的优化建议

Extra含义
Using where;Using Index查找使用了索引,需要的数据都在索引列中可以找到,不需要回表查询数据
Using index condition查找使用了索引,但是需要回表查询数据

type:sql的连接类型,性能由好到差为NULL、system、const、eq_ref、ref、range、index、all

system:查询系统中的表

const:根据主键查询

eq_ref:主键索引查询或唯一索引查询

ref:索引查询

range:范围查询

index:索引树扫描

all:全表扫描

三、索引:

索引是帮助MySQL高效获取数据的数据结构(有序),在数据之外数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引

数据结构对比:

MySQL默认使用的索引结构底层数据结构是B+树,B+Tree是在BTree上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构

B树和B+树的对比:

磁盘读写代价B+树更低,查询效率B+树更加稳定,B+树更便于扫库和区间查询

聚簇索引和非聚簇索引:

分类含义特点
聚簇索引将数据存储与索引放到了一起,索引结构的叶子结点保存了行数据必须有且只能有一个
二级索引(非聚簇索引)将数据与索引分开存储,索引结构的叶子结点关联的是对应的主键可以存在多个

聚簇索引选取规则:

(1).如果存在主键,主键索引就是聚簇索引

(2).如果不存在主键,将使用第一个唯一索引作为聚集索引

(3).如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚簇索引

回表查询:

通过二级索引找到对应的主键值,到聚集索引中查找整行数据


http://www.mrgr.cn/news/78394.html

相关文章:

  • 2024下半年——【寒假】自学黑客计划(网络安全)
  • 【大数据学习 | Spark-SQL】Spark-SQL编程
  • 【Petri网导论学习笔记】Petri网导论入门学习(十) —— 3.2 关联矩阵与状态方程
  • Rust编程语言代码详细运行、编译方法
  • Marscode75:二叉树供暖问题
  • QUAD-MxFE平台
  • 缓存方案分享
  • Vue 2 安装并使用 Ag-Grid ^31.3.4、样式、中文化、组件设计
  • Java 8新特性详解与实战
  • Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation
  • 【k8s深入理解之 Scheme】全面理解 Scheme 的注册机制、内外部版本、自动转换函数、默认填充函数、Options等机制
  • 力扣hot100-->排序
  • Diving into the STM32 HAL-----I²C笔记
  • 【StarRocks】starrocks 3.2.12 【share-nothing】 多Be集群容器化部署
  • K8s调度器扩展(scheduler)
  • 【NLP 2、机器学习简介】
  • 《Unity Shader 入门精要》高级纹理
  • 44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言
  • Ubuntu操作
  • tongweb安全整改(by cz)
  • QT6学习第五天 第一个QT Quick程序
  • 爬虫笔记24——纷玩岛(某岛)自动抢票脚本笔记
  • 006 单片机嵌入式中的C语言与代码风格规范——常识
  • 线索二叉树
  • 【前端】JavaScript 变量声明和函数声明的提升机制:深入探讨提升优先级与其行为
  • 【VUE3】新版Vue3+ElementPlus全家桶开发视频项目实战