网站二次开发多少钱,东莞广告公司东莞网站建设,茌平企业做网站推广,中恒诚信建设有限公司网站通过查询SQL的执行频次#xff0c;我们就能够知道当前数据库到底是增删改为主#xff0c;还是查询为主。 那假如说是以查询为主#xff0c;次数我们可以借助于慢查询日志。接下来#xff0c;我们就来介绍一下MySQL中的慢查询日志。 慢查询日志 慢查询日志记录了所有执行时间… 通过查询SQL的执行频次我们就能够知道当前数据库到底是增删改为主还是查询为主。 那假如说是以查询为主次数我们可以借助于慢查询日志。接下来我们就来介绍一下MySQL中的慢查询日志。 慢查询日志 慢查询日志记录了所有执行时间超过指定参数 long_query_time 单位秒默认 10 秒的所有 SQL 语句的日志。 查看慢查询 MySQL 的慢查询日志默认没有开启我们可以查看一下系统变量 slow_query_log 。 show variables like slow_query_log; 配置慢查询
如果要开启慢查询日志需要在MySQL的配置文件my.cnf中的[mysqld]配置如下信息 配置完毕之后通过以下指令重新启动MySQL服务器进行查看 测试
执行命令
select * from tb_sku;
执行时间超过2秒 查看日志 那这样通过慢查询日志就可以定位出执行效率比较低的SQL从而有针对性的进行优化。
profile show profiles 能够在做 SQL 优化时帮助我们了解时间都耗费到哪里去了。通过 have_profiling 参数能够看到当前 MySQL 是否支持 profile操作。 查看 可以看到当前 MySQL 是支持 profile 操作的但是开关是关闭的。 SELECT have_profiling ; 打开配置 可以通过 set 语句在 session/global级别开启 profiling SET profiling 1; 测试 接下来我们所执行的 SQL 语句都会被 MySQL 记录并记录执行时间消耗到哪儿去 了。 我们直接执行如下的 SQL 语句 select * from tb_user;
select * from tb_user where id 1;
select * from tb_user where name 白起;
select count(*) from tb_sku; 查看耗时 -- 查看每一条SQL的耗时基本情况
show profiles;
-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;
-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id; show profiles;--查看每一条SQL的耗时基本情况 show profile for query 3; --查看指定query_id的SQL语句各个阶段的耗时情况 show profile cpu for query 3; --查看指定query_id的SQL语句CPU的使用情况 explain EXPLAIN 命令获取 MySQL 如何执行 SELECT 语句的信息包括在 SELECT 语句执行过程中表如何连接和连接的顺序 语法
-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;
使用
explain select * from tb_user where name 白起; 字段含义 字段 含义 id select 查询的序列号表示查询中执行 select 子句或者是操作表的顺序 (id相同执行顺序从上到下 id 不同值越大越先执行 ) 。 select_type 表示 SELECT 的类型常见的取值有 SIMPLE 简单表即不使用表连接或者子查询、PRIMARY 主查询即外层的查询、UNION UNION 中的第二个或者后面的查询语句、 SUBQUERY SELECT/WHERE 之后包含了子查询等 type 表示连接类型性能由好到差的连接类型为 NULL 、 system 、 const 、eq_ref、 ref 、 range 、 index 、 all 。 possible_key 显示可能应用在这张表上的索引一个或多个 key 实际使用的索引如果为 NULL 则没有使用索引。 key_len 表示索引中使用的字节数 该值为索引字段最大可能长度并非实际使用长度在不损失精确性的前提下 长度越短越好 。 rows MySQL 认为必须要执行查询的行数在 innodb 引擎的表中是一个估计值可能并不总是准确的。 filtered 表示返回结果的行数占需读取行数的百分比 filtered 的值越大越好。