大家好,我是田维常,可以叫我老田,也可以叫我田哥
。2017年的时候,我刚去上海,朋友内推我去美团面试,之前我也写过一个一篇文章,也是在美团面试中遇到的:
美团面试题:String s = new String("111")会创建几个对象?
关于慢SQL,我和面试官扯了很久,面试官也是很谦虚的,总是点头,自己以为回答的还可以。最后的最后,还是说了“ 你先回去等通知吧! ”。
所以,我决定把这个慢SQL技术点,好好和你分享分享。希望你下次在遇到类似的面试,能顺顺利利轻轻松松的斩获自己想要的offer。
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中查询时间超过(大于)设置阈值(long_query_time)的语句,记录到慢查询日志中。
其中,long_query_time的默认值是10,单位是秒,也就是说默认情况下,你的SQL查询时间超过10秒就算慢SQL了。
在MySQL中,慢SQL日志默认是未开启的,也就说就算出现了慢SQL,也不会告诉你的,如果需要知道哪些SQL是慢SQL,需要我们手动开启慢SQL日志的。
关于慢SQL是否开启,我们可以通过下面这个命令来查看:
在这里插入图片描述
通过命令,我们就可以看到slow_query_log项为OFF,说明我们的慢SQL日志并未开启。另外我们也可以看到我们慢SQL日志存放于哪个目录下和日志文件名。
下面我们来开启慢SQL日志,执行下面的命令:
这里需要注意,这里开启的是我们当前的数据库,并且,我们重启数据库后会失效的。
开启慢SQL日志后,再次查看:
slow_query_log项已经变成ON,说明开启成功。
上面说过慢SQL默认时间是10秒,我们通过下面的命令就可以看到我们慢SQL的默认时间:
在这里插入图片描述
我们总不能一直使用这个默认值,可能很多业务需要时间更短或更长,所以此时,我们就需要对默认时间进行修改,修改命令如下:
修改完了,我们再来看看是否已经改成了3秒。
这里需要注意:想要永久的生效,还需要修改MySQL下面的配置文件my.cnf 文件。
注意:不同 *** 作系统,配置有些区别。
Linux *** 作系统中
Windows *** 作系统中
执行一条慢SQL,因为我们前面已经设置好了慢SQL时间为3秒,所以,我们只要执行一条SQL时间超过3秒即可。
该SQL耗时4.024秒,下面我们就来查看慢SQL出现了多少条。
使用命令:
找到慢SQL日志文件,打开后就会出现类似下面这样的语句;
简单说明:
切记
通常我们定位慢SQL有两种方式:
第一种:定位慢查询 SQL 可以通过两个表象进行判断
第二种:根据不同的数据库使用不同的方式获取问题 SQL
如果开启了慢SQL日志后,可能会有大量的慢SQL日志产生,此时再用肉眼看,那是不太现实的,所以大佬们就给我搞了个工具: mysqldumpslow 。
mysqldumpslow 能将相同的慢SQL归类,并统计出相同的SQL执行的次数,每次执行耗时多久、总耗时,每次返回的行数、总行数,以及客户端连接信息等。
通过命令
可以看到相关参数的说明:
比较常用的参数有这么几个:
mysqldumpslow 常用的使用方式如下:
如上一条命令,应该是mysqldumpslow最简单的一种形式,其中-s参数是以什么方式排序的意思,c指代的是以总数从大到小的方式排序。-s的常用子参数有:c: 相同查询以查询条数和从大到小排序。t: 以查询总时间的方式从大到小排序。l: 以查询锁的总时间的方式从大到小排序。at: 以查询平均时间的方式从大到小排序。al: 以查询锁平均时间的方式从大到小排序。
同样的,还可以增加其他参数,实际使用的时候,按照自己的情况来。
其他常用方式:
接下,我们来个实际 *** 作。
这其中的 SQL 语句因为涉及某些信息,所以我都用*号将主体替换了,如果希望得到具体的值,使用-a参数。
使用 mysqldumpslow 查询出来的摘要信息,包含了这些内容:
Count : 464 :表示慢查询日志总共记录到这条sql语句执行的次数;
Time=18.35s (8515s) :18.35s表示平均执行时间(-s at),8515s表示总的执行时间(-s t);
Lock=0.01s (3s) :与上面的Time相同,第一个表示平均锁定时间(-s al),括号内的表示总的锁定时间(-s l)(也有另一种说法,说是表示的等待锁释放的时间);
Rows=90884.0 (42170176) : 第一个值表示扫描的平均行数(-s ar),括号内的值表示扫描的总行数(-s r)。
是不是
so easy!!!!
大数据开发工程师课程体系——Java部分。
第一阶段:静态网页基础
1、学习Web标准化网页制作,必备的HTML标记和属性
2、学习HTML表格、表单的设计与制作
3、学习CSS、丰富HTML网页的样式
4、通过CSS布局和定位的学习、让HTML页面布局更加美观
5、复习所有知识、完成项目布置
第二阶段:JavaSE+JavaWeb
1、掌握JAVASE基础语法
2、掌握JAVASE面向对象使用
3、掌握JAVASEAPI常见 *** 作类使用并灵活应用
4、熟练掌握MYSQL数据库的基本 *** 作,SQL语句
5、熟练使用JDBC完成数据库的数据 *** 作
6、掌握线程,网络编程,反射基本原理以及使用
7、项目实战 + 扩充知识:人事管理系统
第三阶段:前端UI框架
1、JAVASCRIPT
2、掌握Jquery基本 *** 作和使用
3、掌握注解基本概念和使用
4、掌握版本控制工具使用
5、掌握easyui基本使用
6、项目实战+扩充知识:项目案例实战
POI基本使用和通过注解封装Excel、druid连接池数据库监听,日志Log4j/Slf4j
第四阶段:企业级开发框架
1、熟练掌握spring、spring mvc、mybatis/
2、熟悉struts2
3、熟悉Shiro、redis等
4、项目实战:内容管理系统系统、项目管理平台流程引擎activity,爬虫技术nutch,lucene,webService CXF、Tomcat集群 热备 MySQL读写分离
以上Java课程共计384课时,合计48天!
大数据开发工程师课程体系——大数据部分
第五阶段:大数据前传
大数据前篇、大数据课程体系、计划介绍、大数据环境准备&搭建
第六阶段:CentOS课程体系
CentOS介绍与安装部署、CentOS常用管理命令解析、CentOS常用Shell编程命令、CentOS阶段作业与实战训练
第七阶段:Maven课程体系
Maven初识:安装部署基础概念、Maven精讲:依赖聚合与继承、Maven私服:搭建管理与应用、Maven应用:案列分析、Maven阶段作业与实战训练
第八阶段:HDFS课程体系
Hdfs入门:为什么要HDFS与概念、Hdfs深入剖析:内部结构与读写原理、Hdfs深入剖析:故障读写容错与备份机制、HdfsHA高可用与Federation联邦、Hdfs访问API接口详解、HDFS实战训练、HDFS阶段作业与实战训练
第九阶段:MapReduce课程体系
MapReduce深入剖析:执行过程详解、MapReduce深入剖析:MR原理解析、MapReduce深入剖析:分片混洗详解、MapReduce编程基础、MapReduce编程进阶、MapReduc阶段作业与实战训练
第十阶段:Yarn课程体系
Yarn原理介绍:框架组件流程调度
第十一阶段:Hbase课程体系
Yarn原理介绍:框架组件流程调度、HBase入门:模型坐标结构访问场景、HBase深入剖析:合并分裂数据定位、Hbase访问Shell接口、Hbase访问API接口、HbaseRowkey设计、Hbase实战训练
第十二阶段:MongoDB课程体系
MongoDB精讲:原理概念模型场景、MongoDB精讲:安全与用户管理、MongoDB实战训练、MongoDB阶段作业与实战训练
第十三阶段:Redis课程体系
Redis快速入门、Redis配置解析、Redis持久化RDB与AOF、Redis *** 作解析、Redis分页与排序、Redis阶段作业与实战训练
第十四阶段:Scala课程体系
Scala入门:介绍环境搭建第1个Scala程序、Scala流程控制、异常处理、Scala数据类型、运算符、Scala函数基础、Scala常规函数、Scala集合类、Scala类、Scala对象、Scala特征、Scala模式匹配、Scala阶段作业与实战训练
第十五阶段:Kafka课程体系
Kafka初窥门径:主题分区读写原理分布式、Kafka生产&消费API、Kafka阶段作业与实战训练
第十六阶段:Spark课程体系
Spark快速入门、Spark编程模型、Spark深入剖析、Spark深入剖析、SparkSQL简介、SparkSQL程序开发光速入门、SparkSQL程序开发数据源、SparkSQL程序开DataFrame、SparkSQL程序开发DataSet、SparkSQL程序开发数据类型、SparkStreaming入门、SparkStreaming程序开发如何开始、SparkStreaming程序开发DStream的输入源、SparkStreaming程序开发Dstream的 *** 作、SparkStreaming程序开发程序开发--性能优化、SparkStreaming程序开发容错容灾、SparkMllib 解析与实战、SparkGraphX 解析与实战
第十七阶段:Hive课程提体系
体系结构机制场景、HiveDDL *** 作、HiveDML *** 作、HiveDQL *** 作、Hive阶段作业与实战训练
第十八阶段:企业级项目实战
1、基于美团网的大型离线电商数据分析平台
2、移动基站信号监测大数据
3、大规模设备运维大数据分析挖掘平台
4、基 于互联网海量数据的舆情大数据平台项目
大数据部分共计学习656课时,合计82天!
0基础学员估计学习1040课时,150天!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)