第⼋章 查询性能优化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 第⼋章 查询性能优化

为什么查询速度会慢

查询需要经过⽹络、cup计算、磁盘io等操作,这些操作都是

耗时的。

慢查询基础

通常查询了过多的数据导致慢。

a. 检索了太多不必要的数据。

b. 多表连接时,返回全部列。

c. 重复查询数据

衡量查询的三个指标

1. 扫描⾏数

2. 响应时间

3. 返回的⾏数

查询优化的技巧

1. 使⽤索引覆盖

2. 改变库表结构,单独的汇总表

3. 重写查询

重构查询

重构查询的⽅式,等价的替换之前的查询。

查询切分,将⼀个复杂查询切分为多个简单⼦查询,

分解连接查询,将⼀个连接查询分解为多个单表查询,好处

如下:

a. 缓存效率更⾼,单表查询的缓存。

b. 分解为单个查询,减少锁的竞争。

c. 查询效率有所提升,可能⽐连接查询更⾼效。

d. 减少重复查询数据的次数发送⼀个请求MySQL到底做了什么?

a. 客户端发送SQL语句给服务器

b. server端进⾏SQL语句的解析、处理、由优化器⽣成对应的执⾏计划。

c. MySQL根据优化器⽣成的执⾏计划调⽤引擎层的api执⾏查询。

MySQL的客户端服务器通信协议

半双⼯,并不是客户端从服务器获取数据,⽽是服务器推送数据到客户端。

排序优化

排序是成本很⾼的操作,尽量避免排序。数据量⼩在内存中排序,数据量⼤借⽤磁盘排序。

两种排序算法:

a. 两次传输排序,将需要排序的字段进⾏排序,然后读取对应字段的数据。速度慢,需要两次io。

b. 单词传输排序,读取所有的列,然后进⾏排序返回。但占⽤空间⼤。

查询执⾏引擎

执⾏计划是⼀个数据结构,⽽不是可执⾏的字节码。

优化特定类型的查询

优化count(),count(*)统计所有⾏数

优化连接查询

确保on 和using ⼦句列有索引

使⽤with rollup优化group by

优化limit 和 offset

重点在于优化⼤偏移量,⼤偏移量导致扫描了不需要扫

描的⾏数。

使⽤延迟连接

1686812799633.png

优化SQL CALC FOUND ROWS

作⽤是,⼀些语句在加上limit关键词之后,满⾜limit之

后就抛弃掉以后的数据了,加上该关键词则不会抛弃

limit之后的数据,⽽是继续获取。需要精确的总数可以

使⽤count(*)。

优化union查询

mysql通过填充临时表的⽅式执⾏union查询,如果没有

消除重复⾏的需求,尽量使⽤union all .

只使⽤union MySQL会给临时表加上distinct选项,会

对整个临时表做唯⼀性检查。MySQL总是将结果放⼊临时表。

⼩结

优化三管⻬下:少做、不做、快速的做

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
27587 4
Hadoop入门(一篇就够了)
|
4月前
|
监控 容灾 测试技术
第三方API的稳定性如何保障?
第三方API的稳定性对电商至关重要,直接影响业务连续性和用户体验。为确保稳定,可采取以下措施:选择可靠提供商、评估技术架构高可用性、实现限流重试机制、实时监控预警、充分测试、优化网络连接、使用API网关、保持与提供商沟通、制定应急预案及定期评估改进。这些方法能有效提升API稳定性,保障业务高效运行和用户满意度。
131 0
|
机器人 计算机视觉 Python
openCV 3计算机视觉 Python语言实现 笔记__第一章
openCV 3计算机视觉 Python语言实现 笔记__第一章
|
传感器 编解码 JSON
开源项目-基于小熊派STM32红外热成像仪
开源项目-基于小熊派STM32红外热成像仪
431 1
|
存储 小程序
云开发(微信-小程序)笔记(六)----云函数,就这(下)
云开发(微信-小程序)笔记(六)----云函数,就这(下)
578 0
云开发(微信-小程序)笔记(六)----云函数,就这(下)
|
Cloud Native 前端开发 Java
致景科技|一站式动态多环境建设案例
致景科技成立于2013年12月,是领先的纺织产业互联网企业,国家高新技术企业。旗下拥有“百布”、“全布”、“天工”、“致景金条”、“致景纺织智造园”、“致景智慧仓物流园”等业务板块,致力于通过大数据、云计算、物联网等新一代信息技术,全面打通纺织服装行业的信息流、物流和资金流,帮助行业实现协同化、柔性化、智能化的升级,构建纺织服装纵向一体化的数智化综合服务平台。
致景科技|一站式动态多环境建设案例
|
芯片
Alstom MAE99-04 集成在芯片上的电源管理模块
Alstom MAE99-04 集成在芯片上的电源管理模块
250 0
Alstom	MAE99-04 集成在芯片上的电源管理模块
|
存储 关系型数据库 MySQL
第七章 创建⾼性能的索引
第七章 创建⾼性能的索引
|
NoSQL Linux Redis
Centos8安装Redis6.0
Centos8安装Redis6.0
477 0
|
人工智能 大数据 芯片
全面上云的拐点到了!
7月25日,阿里云智能总裁张建锋在2019阿里云峰会上海站上提出,今年是从传统IT向云计算全面转移的分水岭。阿里云将以“四张王牌”——飞天云操作系统、飞天大数据平台、阿里巴巴双中台和智联网AIoT,助力政企客户走进All in Cloud时代。
4596 0