几个必须掌握的SQL优化技巧(一):查看SQL语句的执行频率

简介: 在应用的开发过程中,由于开发初期的数据量一般都比较小,所以开发过程中一般都比较注重功能上的实现,但是当完成了一个应用或者系统之后,随着生产数据量的急剧增长,那么之前的很多sql语句的写法就会显现出一定的性能问题,对生产的影响也会越来越大,这些不恰当的sql语句就会成为整个系统性能的瓶颈,为了追求系统的极致性能,必须要对它们进行优化。

1 前言


在应用的开发过程中,由于开发初期的数据量一般都比较小,所以开发过程中一般都比较注重功能上的实现,但是当完成了一个应用或者系统之后,随着生产数据量的急剧增长,那么之前的很多sql语句的写法就会显现出一定的性能问题,对生产的影响也会越来越大,这些不恰当的sql语句就会成为整个系统性能的瓶颈,为了追求系统的极致性能,必须要对它们进行优化。

这篇文章开始后面的几篇文章将结合自己平时工作和学习中的知识记录下,当面对一个有sql性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题、解决问题。


2 正文


这篇文章主要讲两个命令,它们分别是:


show[session|global] status
复制代码



show global status like 'Innodb_rows_%'
复制代码


在MySQL客户端连接成功后,我们可以通过


show[session|global] status
复制代码


命令可以提供服务器状态信息。


该命令可以根据需要使用 参数session或者global来显示session级(当前连接)的统计结果和global级(自数据库上次启动至今)的统计结果。如果不写,则默认使用session参数。比如下面的语句即可以查看当前连接的那些sql语句执行的频率比较高,比如查询、更新、插入还是删除的哪种操作较多。一般来说主要是以查询为主。


show status like 'Com_______'
复制代码


因为我这本地数据库,所以现在并没有sql语句的执行操作:


c66dd47032ac41de9756df1cccc60f7c~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


show global status like 'Com_______'
复制代码


上面的命令即可查看全局的(自数据库上次启动至今)的统计结果。可以看到查询操作一共执行了10次。


8da7a2ccbafd41689b23c3c1a9baf7b0~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


并且在执行完操作之后,我们可以看到操作统计数据也会发生变化:


328af2a08b314de6a6ad03c3d01bd294~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


在执行完update语句之后:


UPDATE jdbc.`user` set username='孙悟空' where id=1
复制代码


再执行上述命令可以发现update影响的数据行数发生了变化:

ed68e79ff84d456591f35979e6a70a69~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg

对于Innodb数据库引擎的执行命令如下:

show global status like 'Innodb_rows_%'
复制代码


5742481149fa4aa99d6d8b80434ac799~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg

Com_%表示的是%语句执行的次数,并且对于所有的存储引擎的表操作都会进行统计。


Innodb_%则只针对Innodb存储引擎的数据库,并且统计的算法与其他的数据库也有区别。


在上面查询结果中有几个很重要的参数,它们分别是:Insert、delete、update、select(innodb对应的则是read),它们分别对应数据库操作的增删改查。


3 总结


通过上述的命令我们可以发现数据库主要以何种操作为主,那么可以为后续的sql优化提供一些借鉴性的意见。

后面将会继续分享关于sql优化的其他方法和步骤。

目录
相关文章
|
2月前
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
23 3
|
2月前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
13 1
|
2月前
|
SQL 存储 分布式计算
我在淘宝写SQL|ODPS SQL 优化总结
本文结合作者多年的数仓开发经验,结合ODPS平台分享数据仓库中的SQL优化经验。
|
2月前
|
SQL 关系型数据库 MySQL
(十七)SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!
(Structured Query Language)标准结构化查询语言简称SQL,编写SQL语句是每位后端开发日常职责中,接触最多的一项工作,SQL是关系型数据库诞生的产物,无论是什么数据库,MySQL、Oracle、SQL Server、DB2、PgSQL....,只要还处于关系型数据库这个范畴,都会遵循统一的SQL标准,这句话简单来说也就是:无论什么关系型数据库,本质上SQL的语法都是相同的,因为它们都实现了相同的SQL标准,不同数据库之间仅支持的特性不同而已。
|
3月前
|
SQL 运维 监控
MSSQL性能调优深度探索:索引策略、SQL优化技巧与高效并发管理
在Microsoft SQL Server(MSSQL)的运维与优化领域,性能调优是确保数据库高效、稳定运行的核心任务
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之在使用ODPSSQL节点进行SQL任务开发时,如何执行大量的SQL语句
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
80 4
|
3月前
|
SQL 存储 关系型数据库
MySQL设计规约问题之为什么要尽量将大的SQL语句拆分成小的SQL语句
MySQL设计规约问题之为什么要尽量将大的SQL语句拆分成小的SQL语句
|
4月前
|
SQL 关系型数据库 数据库
nacos 2.2.3版本 查看配置文件的历史版本的接口 是针对MySQL数据库的sql 改成postgresql后 sql语句报错 该怎么解决
在Nacos 2.2.3中切换到PostgreSQL后,执行配置文件历史版本分页查询出错,因`LIMIT 0, 10`语法不被PostgreSQL支持,需改为`LIMIT 10 OFFSET 0`。仅当存在历史版本时报错。解决方案是调整查询SQL以兼容PostgreSQL语法。
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
49 2
|
5月前
|
SQL 存储 Java
9个SQL优化技巧
本文总结了SQL查询优化的几个关键策略:1) 避免使用`select *`,只查询需要的字段;2) 检查执行计划,确保查询条件和排序字段使用了索引;3) 避免使用`or`连接,可考虑用`union`替代;4) 减少`in`和`not in`的使用,尤其是大数据量时;5) 避免左模糊查询,以利用索引;6) 使用JOIN代替子查询,提高效率;7) 根据需求选择合适的JOIN类型(如INNER JOIN、LEFT JOIN);8) 优化`group by`字段,使用索引和覆盖索引;9) 对深分页查询进行优化,如使用子查询、标签记录法。这些策略有助于提升接口性能和数据库效率。
164 1
下一篇
无影云桌面