文件夹里内容做网站的分类,开发公司项目部人员配置,wordpress 百科插件,政协网站建设意义一、SQL性能分析
1.SQL执行频率 MySQL 客户端连接成功后#xff0c;通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令#xff0c;可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次#xff1a; -- session 是查看当…一、SQL性能分析
1.SQL执行频率 MySQL 客户端连接成功后通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次 -- session 是查看当前会话 ;
-- global 是查询全局数据 ;
SHOW GLOBAL STATUS LIKE Com_______; Com_delete: 删除次数 Com_insert: 插入次数 Com_select: 查询次数 Com_update: 更新次数 我们可以在当前数据库再执行几次查询操作然后再次查看执行频次看看 Com_select 参数会不会变化。 通过上述指令我们可以查看到当前数据库到底是以查询为主还是以增删改为主从而为数据库优化提供参考依据。 如果是以增删改为主我们可以考虑不对其进行索引的优化。 如果是以查询为主那么就要考虑对数据库的索引进行优化了。 那么通过查询SQL的执行频次我们就能够知道当前数据库到底是增删改为主还是查询为主。 那假如说是以查询为主我们又该如何定位针对于那些查询语句进行优化呢 次数我们可以借助于慢查询日志。 接下来我们就来介绍一下 MySQL 中的慢查询日志。 2.慢查询日志 慢查询日志记录了所有执行时间超过指定参数 long_query_time 单位秒默认 10 秒的所有 SQL 语句的日志。 MySQL 的慢查询日志默认没有开启我们可以查看一下系统变量 slow_query_log 。 SHOW VARIABLES LIKE slow_query_log; 我的之前配置过所以显示的是ONoff为关on为开: 如果要开启慢查询日志需要在 MySQL 的配置文件C:\ProgramData\MySQL\MySQL Server 8.0中配置如下信息 # 开启MySQL慢日志查询开关
slow_query_log1
# 设置慢日志的时间为2秒SQL语句执行时间超过2秒就会视为慢查询记录慢查询日志
long_query_time2 小知识 my.ini和my.cnf的区别 MySQL的配置文件在windows系统为 my.ini 而在linux或者MacOs是 my.cnf linux或者MacOs配置文件所在位置 安装MySQL方式不同配置文件所在位置也不同如果是安装版一般默认在 /usr/local/mysql-[版本号]/ 而免安装版一般都都在 MySQL安装目录的根路径下如果找不到MySQL的安装目录那么Linux和MacOS是可以通过命令搜索的一般会放在/etc/my.cnf/etc/mysql/my.cnf。如果找不到可以用find命令查找。 Windows的配置文件所在位置 无论安装版和免安装版最好的办法是通过环境变量的方式查找方式有了我就不在这里赘述了。 慢查询日志 测试【linux版本】
配置完毕之后通过以下指令重新启动MySQL服务器进行测试查看慢日志文件中记录的信息
/var/lib/mysql/localhost-slow.log 。
systemctl restart mysqld 然后再次查看开关情况慢查询日志就已经打开了。
A. 执行如下SQL语句
select * from tb_user; -- 这条SQL执行效率比较高, 执行耗时 0.00sec
select count(*) from tb_sku; -- 由于tb_sku表中, 预先存入了1000w的记录, count一次,耗时
13.35sec B. 检查慢查询日志
最终我们发现在慢查询日志中只会记录执行时间超多我们预设时间 2s 的 SQL 执行较快的 SQL是不会记录的。 那这样通过慢查询日志就可以定位出执行效率比较低的 SQL 从而有针对性的进行优化。 3.profile详情 show profiles 能够在做 SQL 优化时帮助我们了解时间都耗费到哪里去了。通过 have_profiling 参数能够看到当前 MySQL 是否支持 profile 操作 SELECT have_profiling ; 可以看到当前MySQL是支持 profile操作的如果开关是关闭的。
可以通过set语句在 session/global级别开启profiling SET profiling 1; SELECT profiling ; 开关已经打开了接下来我们所执行的SQL语句都会被MySQL记录并记录执行时间消耗到哪儿去了。 我们直接执行如下的SQL语句
select * from tb_user;
select * from tb_user where id 1;
select * from tb_user where name 白起;
select count(*) from tb_user; 执行一系列的业务 SQL 的操作然后通过如下指令查看指令的执行耗时 -- 查看每一条SQL的耗时基本情况
show profiles;
-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;
-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id; 查看每一条SQL的耗时情况: 查看指定SQL各个阶段的耗时情况 : show profile for query 97; 4.explain EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息包括在 SELECT 语句执行过程中表如何连接和连接的顺序。 -- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ; Explain 执行计划中各个字段的含义: 二、好书推荐 清华社【秋日阅读企划】领券立享优惠
IT好书 5折叠加10元 无门槛优惠券https://u.jd.com/Yqsd9wj
活动时间9月4日-9月17日先到先得快快来抢 迫不及待的小伙伴点击链接查看 Spring Cloud 微服务快速上手 本次送书 2 本 评论区抽2位小伙伴送书 活动时间截止到 2023-09-17 20:00:00 抽奖方式利用程序进行抽奖。 参与方式关注博主、点赞、收藏评论区评论 人生苦短我用Java