1.查询优化器模块
MySql Query Optimizer
mysql数据拿到一个query语句之后都会交给Query Optimizer去解析,并产生 一个最优的执行计划(这个是Optimier认为最优的,不一定是真正最优的)然后按照这个执行计划去执行查询语句。这一部分是最耗时的。有很多第三方为了提高性能绕开mysql的 query optimizer模块。--->HandlerSocket
2.查询优化的基本思路
优化更需要优化的query语句
-
应该优化并发更高的query语句
-
一个高并发的query语句,如果走错了执行计划,可能会有灾难性的后果
查看执行计划调整query语句
-
explain 跟查询语句,就能查看执行计划
-
执行计划中的一些元素
-
Id 查询的序列化
-
Select type
DEPENT SUBQUERY --->说明该查询是子查询中的第一个Select,依赖与外部查询的结果集
PRIMARY ---->子查询的最外层查询,注意不是主键查询
simple ----->除子查询或者UNION之外的其它查询
subquery -
table 访问数据库的表的名称
-
type
all -->全表扫描
const--->读常量,且最多只有一条记录匹配。由于是常量只需要读一次
index --->全索引扫描
eq_ref --->最多只有一条匹配结果 通过主键和唯一索引来访问的
range --->索引范围扫描
possible_keys --->该查询可以利用到的索引有哪些
key --->优化器模块选择用了哪个索引
--->有索引不一定就会用到,看执行计划才知道用了哪个。
key_len 索引长度
rows 返回的行数
extra
using filesort--->说明用了排序算法 -
学会去查看性能损耗(CPU损耗,IO损耗)
开启 set profiling = 1;
查看show profiles;
show profile cpu,block io for query n;
3.查询的基本原则
-
永远用小结果集驱动大结果集
join查询是,驱动表,一定是条件限定后记录较少的表
mysql 的join 只有一种算法 Nested loop 通过嵌套循环实现,驱动结果集越大,所需要循环的次数越多,访问被驱动表的次数也越多。降低IO同时降低CPU
- 只取出自己需要的列
IO降低了
和排序算法也有关系 - 仅仅使用最有效的过滤条件
前提是 用a 条件 查询出结果 用b条件查询出结果,a,b都用查询出结果,这三次结果都一样
到底是用a条件还是b条件,还是两个条件都限定
只能看执行计划 - 尽量避免复杂的join和子查询
- 尽量在索引列上完成排序和查询
在索引列上排序 --->索引列上是排好序的,不需要启动额外的排序的算法降低了CPU的损耗
在索引列上查询---->降低了IO的损耗
创建了索引,优化器模块不一定就会用。
相关推荐
服务器型号解释 博文链接:https://394498036.iteye.com/blog/2289844
MySQL Cluster是一种高可用、高性能的分布式数据库解决方案,它在MySQL服务器的基础上增加了数据的冗余和分布处理能力。本文将深入探讨MySQL Cluster的核心概念、架构、工作原理以及如何使用。 一、MySQL Cluster...
这是一份专为深入理解MySQL数据库优化设计的学习资料,旨在帮助用户提升在实际工作中处理数据查询效率的能力。MySQL作为世界上最流行的开源关系型数据库管理系统,其性能优化是每个数据库管理员和开发者的必备技能。...
本资料"MySQL高级_思维导图.pdf"深入探讨了MySQL的一些高级主题,帮助读者理解其核心机制和优化策略。以下是根据提供的思维导图内容展开的详细知识点: 1. **MySQL的架构介绍** MySQL通常采用客户端/服务器架构,...
这份“MySQL优化学习思维笔记”通过xmind形式呈现,可能涵盖了上述多个方面,为学习者提供了一个系统化的框架。学习和掌握这些知识点,将有助于你成为一位出色的MySQL数据库管理员,有效地解决性能问题,提升系统的...
以上内容涵盖了MySQL基本知识点思维导图中的主要部分,从基础知识到核心查询再到高级应用,为学习者提供了全面深入的理解框架。通过这些知识点的学习,可以有效地掌握MySQL的核心功能,并能够灵活运用到实际项目中去...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中被广泛应用。周阳的Mysql高级脑图完整版提供了一个全面的学习框架,帮助用户深入理解MySQL的高级特性。以下将根据标题、描述以及标签,详细...
- **查询优化器**:了解MySQL如何选择最佳查询路径,以及如何影响查询性能。 2. **存储引擎** - **InnoDB与MyISAM**:对比分析InnoDB(事务安全,支持行级锁定)与MyISAM(非事务安全,读取速度快)的特点,理解...
Redis批量查询优化 Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 ...
MySQL是一款广泛使用的开源关系型数据库管理系统,它以其高效、稳定、易用的特点在众多企业中占据重要地位。尚硅谷周阳老师的MySQL高级课程深入讲解了MySQL的高级特性与最佳实践,旨在帮助学员掌握更深层次的数据库...
【MySQL存储过程.xmind】可能是一个思维导图,详细梳理了存储过程的概念、创建、调用、参数传递以及在实际项目中的应用案例。 综上所述,这份学习资料全面覆盖了MySQL从基础到进阶的各个方面,对于希望深入学习和...
5. **数据库管理系统(DBMS)**:DBMS是一组软件,用于创建、维护和控制数据库,如Oracle、MySQL、SQL Server等。 6. **数据库设计**:包括需求分析、概念设计(ER模型)、逻辑设计(DDL语句)、物理设计(考虑存储...
- 数据库设计与优化 - 存储过程与触发器 **1.3 Linux操作系统** - **知识点**: - Linux系统结构 - 命令行操作 - 文件系统管理 - 进程与线程管理 - Shell脚本编写 **1.4 Web项目实战** - **知识点**: - ...
9. 数据库性能优化:学习索引、查询优化器、查询优化技巧等,以提升数据库的运行效率。 通过阅读本书,结合目录结构图和思维导图,你不仅可以系统地学习数据库理论,还能获得实际操作的技能,为成为合格的数据库...
作为java初学者来说,想要快速入门java,首先要了解自己应该学习哪些技术! 前期千万不要盲目直接...| 并发+JVM+Redis+MySQL+分布式+微服务+性能优化 1.计算机网络 2.JVM 3.多线程 4.集合 5.数据库面试专题 6.多线程
TiDB是一个典型的NewSQL数据库,它提供了与MySQL兼容的SQL支持,支持水平弹性扩展,具有分布式事务和跨数据中心的数据强一致性保证。 TiDB的设计目标是同时满足OLTP和OLAP的需求,尤其是在大规模数据处理场景下。...
不仅仅是CDN/Redis数据库索引等常用优化方法更有程序逻辑细节调整,产品策略技巧全新的优化思维4.从单机到web集群,从多服务器到多机房数据中心,服务器资源可随业务规模扩展,不局限于系统极限容量5.加入机器人服务...
- **MySQL优化**:分享MySQL性能调优技巧,包括索引优化、查询语句改进等。 - **JVM调优**:探讨JVM内存模型、垃圾回收机制,并提供实际案例分析。 - **高并发处理**:介绍双十一技术复盘中的高并发秒杀系统设计...
6. **MySQL**:这是一个广泛使用的SQL数据库管理系统,涉及事务处理、索引优化、查询优化、数据库设计(如范式理论)等。了解MySQL有助于构建高性能的数据存储解决方案。 7. **Redis**:作为一款内存数据结构存储...