首页 > 数据库 >Mysql——运维

Mysql——运维

时间:2022-08-25 22:55:07浏览次数:87  
标签:log 运维 -- 查询 索引 Mysql 日志 SELECT

慢日志可以进行对数据库系统查询方面大于设定值进行的日志记录。

慢日志
- 执行时间 > 10
- 未命中索引
- 日志文件路径
            
 配置:
- 内存
   show variables like '%query%';
   show variables like '%queries%';
   set global 变量名 = 值
- 配置文件
   mysqld --defaults-file='E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\my-default.ini'
                
my.conf内容:
 slow_query_log = ON
 slow_query_log_file = D:/....
                    
注意:修改配置文件之后,需要重启服务

MySQL日志管理
========================================================
错误日志: 记录 MySQL 服务器启动、关闭及运行错误等信息
二进制日志: 又称binlog日志,以二进制文件的方式记录数据库中除 SELECT 以外的操作
查询日志: 记录查询的信息
慢查询日志: 记录执行时间超过指定时间的操作
中继日志: 备库将主库的二进制日志复制到自己的中继日志中,从而在本地进行重放
通用日志: 审计哪个账号、在哪个时段、做了哪些事件
事务日志或称redo日志: 记录Innodb事务相关的如事务执行时间、检查点等
========================================================
一、bin-log
1. 启用
# vim /etc/my.cnf
[mysqld]
log-bin[=dir\[filename]]
# service mysqld restart
2. 暂停
//仅当前会话
SET SQL_LOG_BIN=0;
SET SQL_LOG_BIN=1;
3. 查看
查看全部:
# mysqlbinlog mysql.000002
按时间:
# mysqlbinlog mysql.000002 --start-datetime="2012-12-05 10:02:56"
# mysqlbinlog mysql.000002 --stop-datetime="2012-12-05 11:02:54"
# mysqlbinlog mysql.000002 --start-datetime="2012-12-05 10:02:56" --stop-datetime="2012-12-05 11:02:54" 

按字节数:
# mysqlbinlog mysql.000002 --start-position=260
# mysqlbinlog mysql.000002 --stop-position=260
# mysqlbinlog mysql.000002 --start-position=260 --stop-position=930
4. 截断bin-log(产生新的bin-log文件)
a. 重启mysql服务器
b. # mysql -uroot -p123 -e 'flush logs'
5. 删除bin-log文件
# mysql -uroot -p123 -e 'reset master' 


二、查询日志
启用通用查询日志
# vim /etc/my.cnf
[mysqld]
log[=dir\[filename]]
# service mysqld restart

三、慢查询日志
启用慢查询日志
# vim /etc/my.cnf
[mysqld]
log-slow-queries[=dir\[filename]]
long_query_time=n
# service mysqld restart
MySQL 5.6:
slow-query-log=1
slow-query-log-file=slow.log
long_query_time=3  单位为秒
查看慢查询日志
测试:BENCHMARK(count,expr)
SELECT BENCHMARK(50000000,2*3);

 

执行计划:

Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
explait select id from s1 where id=100000;
+--+-----------+-----+----+-------------+---+-------+---+----+-----+
|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|
+--+-----------+-----+----+-------------+---+-------+---+----+-----+
 
 
 
下面对各个属性进行了解:
 
1、id:这是SELECT的查询序列号
 
2、select_type:select_type就是select的类型,可以有以下几种:
 
SIMPLE:简单SELECT(不使用UNION或子查询等)
 
PRIMARY:最外面的SELECT
 
UNION:UNION中的第二个或后面的SELECT语句
 
DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询
 
UNION RESULT:UNION的结果。
 
SUBQUERY:子查询中的第一个SELECT
 
DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询
 
DERIVED:导出表的SELECT(FROM子句的子查询)
 
3、table:显示这一行的数据是关于哪张表的
 
4、type:这列最重要,显示了连接使用了哪种类别,有无使用索引,是使用Explain命令分析性能瓶颈的关键项之一。
 
结果值从好到坏依次是:
 
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
 
一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。
 
5、possible_keys:列指出MySQL能使用哪个索引在该表中找到行
 
6、key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL
 
7、key_len:显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好
 
8、ref:显示使用哪个列或常数与key一起从表中选择行。
 
9、rows:显示MySQL认为它执行查询时必须检查的行数。
 
10、Extra:包含MySQL解决查询的详细信息,也是关键参考项之一。
 
Distinct
一旦MYSQL找到了与行相联合匹配的行,就不再搜索了
 
Not exists
MYSQL 优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,
 
就不再搜索了
 
Range checked for each
 
Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一 个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一
 
Using filesort
看 到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来 排序全部行
 
Using index
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表 的全部的请求列都是同一个索引的部分的时候
 
Using temporary
看到这个的时候,查询需要优化了。这 里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上
 
Using where
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index, 这就会发生,或者是查询有问题
 
其他一些Tip:
 
当type 显示为 “index” 时,并且Extra显示为“Using Index”, 表明使用了覆盖索引。

  

 

 


标签:log,运维,--,查询,索引,Mysql,日志,SELECT
From: https://www.cnblogs.com/xinbing/p/16626064.html

相关文章

  • Mysql入门练习题
    1、在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄mysql>selectname,agefromstudentswhereage>25andgender='M';+---------------+-----+|name......
  • MySql数据库
    MySql数据库概述MySQL是一个基于Sql结构化查询语言的关系型数据库,由瑞典MySQLAB公司开发,目前属于Oracle公司。数据类型数值类型inttinyint、smallint、mediumi......
  • Mysql——索引
    索引1.建立起一个在存储表阶段就有的一个存储结构能在查询的时候加速。2.提高读的速度,降低写的速度。3.读写比例为10:1索引原理:因软件时听过操作系统来进行对硬盘......
  • mysql增删改查
    #include<stdio.h>#include<stdlib.h>#include<mysql.h>#include<unistd.h>#include<string.h>intmain(){ MYSQL*conn; MYSQL_RES*res; MYSQL_ROWro......
  • mysql的增删改查
    针对库的增删改查(文件夹)#增createdatabasedb1;创建一个库库名为db1createdatabasedb2charset='gbk';创建一个库库名为db2charset设置编码为gbk#查sho......
  • 运维篇 后端开发后期
          例:  taskkill-f-pid “9740”    ......
  • Mysql中空间字段类型Wkt和Wkb的坑
    工作中遇到空间数据,提供给我们的是二进制的Wkt的格式,存储在Mysql数据库中,采集的时候告知我们是Wkb的数据格式,由于第一次接触这样的数据格式,去查了官方文档https://www.mys......
  • MySQL搭建主从集群详细步骤~
    一、Docker安装MySQL搭建主从dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]dockerrun-p3306:3306很多-d--namehahamysql:5.7Docker启动容器的数据......
  • Java 连接 MySQL
    让Java和MySQL连接起来-囧雪诺-博客园 https://www.cnblogs.com/jonsnow/p/6246131.htmlJava连接MySQL需要驱动包,可以下载菜鸟教程提供的 jar包:http://stati......
  • Mysql 存储引擎(Innodb & MyIsam)
    SHOWENGINES;#查看mysql上面全部的存储引擎  下面主要讲解Innodb&MyIsam1.数据结构a.Innodb数据,索引,表结构都存在一个.ibd文件里b.MyIsam在磁盘上存储分......