MySQL慢查询优化问题-解决办法

数据库100

根据发现的问题,找到原因,然后对症下药

发现问题(主动/被动)

问题点:数据库查询过程中速度过慢的SQL语句

主动:数据库默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的

mysql> show variables  like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | OFF                                           |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)

mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.09 sec)

mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | ON                                            |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)

被动:用户在使用程序时候告知页面反应慢

找到原因-对症下药

原因点:没有加索引、索引失效、SQL极度复杂、高并发

索引失效7字口诀:
模:模糊查询LIKE以%开头
型:数据类型错误
数:对索引字段使用内部函数
空:索引列是NULL
运:索引列进行四则运算
最:复合索引不按索引列最左开始查找
快:全表查找预计比索引更快

优化表结构和程序

在程序和数据库之间加入缓存

Original: https://www.cnblogs.com/1fengchen1/p/15909410.html
Author: SonnyZhang
Title: MySQL慢查询优化问题-解决办法



相关阅读1

Title: 解决:阿里云服务器添加安全组端口映射后仍无法访问

"忘记了不该忘的人,我的内心满是伤痕......."

"呸,渣女,什么人?那是配置!配置!配置!"

问题:

阿里云服务器添加安全组端口映射后仍无法访问?

"诺,你看明明配置了不是?可就是不起作用!!!"

"明明配置了?谁是 "明明"?"
MySQL慢查询优化问题-解决办法
看,这里是配置端口开放了哈。
MySQL慢查询优化问题-解决办法

场景再现:

原本想梳理下环境搭建,跑项目的一系列操作,便于自己回顾嘛。结果,入坑了.....折腾了好久。这问题,都没往那方面想!!!
MySQL慢查询优化问题-解决办法
"没往哪想?那你在想什么?"
"可能是在想前几天遇到的那个.................(靓仔)...."

哈哈哈哈哈,不开玩笑了,认真啦,认真啦。

请允许我再描述一下当时的场景。那是一个月黑风高的夜晚................

我当时打了个jar包丢到了服务器上。
MySQL慢查询优化问题-解决办法
命令跑jar包:

nohup java -jar xxxxx.jar &

确认jar文件是跑起来了哈,如下图。
MySQL慢查询优化问题-解决办法
看下数据库中数据:

这数据,这字段,眼熟不?(莫diss哈,这明显是上次文章的库表嘛)。

不信你看:《Mybatis Mapper.xml中字符串形式传参,逗号分隔 AND中拼接OR》
MySQL慢查询优化问题-解决办法
害!害!害!别纠结字段了,快用PostMan测试一下:
MySQL慢查询优化问题-解决办法
what? what? what? 没通?
MySQL慢查询优化问题-解决办法
果然啊
MySQL慢查询优化问题-解决办法

肯定是姿势不对,换个方法尝试.....

去到服务器上测试接口,借用PostMan工具,快速生成所需的命令行。
MySQL慢查询优化问题-解决办法
MySQL慢查询优化问题-解决办法

执行下该命令,可以看到请求正常,数据是已经拿到的。
MySQL慢查询优化问题-解决办法

服务器本机可以,外部访问不了。是否服务器8080端口没有映射开放?
MySQL慢查询优化问题-解决办法
阿里云服务器中新增端口映射(别忘记点后面的保存)。
MySQL慢查询优化问题-解决办法
配置完了,再次用postMan发送请求,还是超时。

呦,还挺倔!

尝试用 telnet IP 端口。好家伙,发现不通!
MySQL慢查询优化问题-解决办法
emo了啊,telnet不通,考虑到是否是服务器防火墙的原因。

尝试列出:firewall-cmd --list-all
MySQL慢查询优化问题-解决办法
还真没有8080端口。

没有,咱就加呗。

firewall-cmd --zone=public --add-port=8080/tcp --permanent

重启一下(重启生效):

firewall-cmd --reload

再次查看,有了有了。
MySQL慢查询优化问题-解决办法
telnet try again.... 发现通了
MySQL慢查询优化问题-解决办法
如下图所示:
MySQL慢查询优化问题-解决办法
尝试postMan 再次请求,我直呼"好家伙"!!!
MySQL慢查询优化问题-解决办法

总结:

只在阿里云服务器安全组中添加端口映射,服务器防火墙对应端口忘记开放(总是忘记),外部是访问不到的。

这.........总是忘记怎么办?

MySQL慢查询优化问题-解决办法

Original: https://www.cnblogs.com/wshanshi/p/15530104.html
Author: wshanshi
Title: 解决:阿里云服务器添加安全组端口映射后仍无法访问

相关阅读2

Title: jdbc-处理查询结果集

package com.cqust;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//处理查询结果集
public class JDBCTest04 {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/cqust_db";
String user = "root";
String password = "****";
//1.注册驱动
//这里会调用静态代码快执行驱动注册
Class.forName("com.mysql.jdbc.Driver");

    //2.获取连接
    Connection connection = DriverManager.getConnection(url,user,password);

    //3.获取数据库操作对象

    Statement statement = connection.createStatement();

    //4.执行sql
    String sql = "select id,user2_name from t_user2 where id = 1";
    /**
     * statement.executeQuery(sql);
     * 这里返回的是一个ResultSet可以想象是返回的一张表
     * 执行select,然后该方法返回了一张表
     */
    ResultSet resultSet = statement.executeQuery(sql);

    //5.处理查询结果集(针对select语句,如果不是则不需要这一步)

    /**
     * 这里是对resultSet的一个处理
     * 虽然返回了表,但是我们想要看到结果还需要进行处理数据
     * 将它变成我们想要的样子
     *
     * resultSet.next()该方法返回的是一个true表示这张表的第一行
     * 有数据,然后我们可以通过get方法获取到数据
     * 每一次next()会指向表中的下一条数据
     * 如果resultSet.next()为false表示这一行没有数据,则退出循环
     */
    while (resultSet.next()){
        int id = resultSet.getInt("id");
        String name = resultSet.getString("user2_name");
        System.out.println(id+"| "+name);
    }

    //6.关闭资源
    if (resultSet !=null){
        resultSet.close();

    }
    if (statement !=null){
        statement.close();

    }
    if (connection !=null){
        connection.close();

    }

}

}

Original: https://www.cnblogs.com/journeyhch/p/15573662.html
Author: journeyhch
Title: jdbc-处理查询结果集

相关阅读3

Title: 如何构建你自己的计算机网络知识体系?

大家好,我是小牛肉,不知道各位曾经有没有和我一样的困惑,就是有些知识好像已经看了好多遍了,但是知识点在脑子中是分散的,没办法串联起来,别人问一个问题我能答出来一点,但是你让我自己从头梳理一下这个知识包含的所有重点内容,我又脑子一篇空白不知道该从何说起。

这就是缺乏完善的知识体系。

或者说,基础不牢~

这篇文章跟大家说一下我的学习方法,如何夯实基础,如何慢慢构建自己的知识体系,绝对干货!全文以《计算机网络》这门课为例。

Step 1

首先,很多科班的同学大学肯定都上过计网的课,谢希仁那本教材(实名吐槽,太晦涩了,简直就是大学时代的梦靥),如果你上课认真听讲过,对计算机网络这门课已经有了一个比较全面的认识,那我觉得这第一步就可以直接跳过吧。

对于一个像计算机网络这种比较庞大比较复杂的知识,且知识点不会发生非常大的更新与迭代,我的首选都是 先看视频

看视频 = 别人嚼碎了吐出来喂给你

在学习之初对新知识没人形成自己的初步认知的时候,你翻开书,感觉满书都是重点,满书都是难点,尤其是教材类的书,又大又全,真无从下手。

这个时候,听听大佬的讲解,学学大佬的经验,比自己一个人埋头看书更容易把握重点,更高效

下面推荐的这个计算机网络视频,是我当时考研的时候看的,王道论坛出品,考研同学应该都听说过。视频讲的不深,但是该有的都有,讲得也挺通俗易懂的,授课老师就是上岸学姐,感觉可能比七八十年代的老师更懂我们的痛点:

MySQL慢查询优化问题-解决办法

地址在这里:https://www.bilibili.com/video/BV19E411D78Q?from=search&seid=17336949192308370764&spm_id_from=333.337.0.0
或者直接 B 站搜 "王道考研 计算机网络"

看视频的时候带上脑子!弹幕关了,笔记安排上,当然也不必面面俱到,把 PPT 抄一遍啥用也没有,列个大纲 or 思维导图即可,毕竟这一步只是帮助我们对计算机网络这门课有一个全面的认识。

关于弹幕,大部分时间建议关上,不然影响学习体验。

但是,弹幕人才多!

当你有些知识点没听懂 or 持反对意见的时候,可以打开弹幕看一看,你有这个困惑,大概率有人和你一样,说不定有 surprise

Step 2

看完视频后,脑子处于混沌状态,也即文章开头提到的,知识点在脑子中是分散的,没办法串联起来。

所以,第二步就是看书,看经典的书。

我觉得这是构建知识体系最重要的一环。之前我自己零零散散学 Java 的时候,看过 B 站上黑马、尚硅谷啥啥等很多视频,到最后老是觉得自己好像知道很多东西,但是又说不出个所以然来,似空中楼阁,总怕有一天就塌了。

就这种恐惧感逼迫着我明白了一个道理, 别人嚼碎了的东西终究是别人的,你自己的知识体系终究要靠你自己一砖一瓦堆砌起来

遗憾的是,大部分同学都夭折在这里了,看完视频就觉得自己行了,迫不及待转战下一个知识了。

这么一说估计好多同学焦虑感马上上来了,赶紧屯了一大堆书。

其实看书之前做好测评,看看大佬们推荐的一些好书,然后选择其中一本读下来就行。如果这一本书的某个章节有缺陷或者没有解决你的疑惑,可以找其他书的对应章节看看,互补一下。

关于计算机网络,我只推荐两本书, 两本神书!(文末有高清 PDF 资源获取方式)网络上很多关于计算机网络的图基本都参考自这两本书

《图解 HTTP》:

MySQL慢查询优化问题-解决办法

《图解 TCP/IP》:

MySQL慢查询优化问题-解决办法

另外,看书的时候注意做好成体系的读书笔记与总结!

读书笔记(博客)这个东西在程序员的圈子里已经被提烂了,其重要性不言自明。

毕竟要学的东西这么多,光靠脑子咱能记得住。看一遍书不做笔记那回过头忘记了还得再看一遍书,太浪费时间,不如在一开始就做好笔记。

Step 3

看完书其实就差不多了,脑子里跑一遍思维导图,知识体系已接近完善了。

不过,在看书的时候,其实或多或少还是存在一些疑难杂症我们自己没办法独立解决的,这个时候可以看一些优质的文章 or 博客,网络上大佬们还是非常多的。

关于如何搜索高质量的文章,这里首推 "掘金"、"微信搜一搜"、"知乎" 这三个平台,CS某N 上的文章水平有点层次不齐了,很容易浪费时间。

关于这一步,我其实见过很多人只做这最后一步,在网络上找一些大佬总结的知识点背一下然后就过了,仁者见仁智者见智,我只能说不能太依赖博客,除非距离考试面试时间真的过于紧迫,不然还是打好根基为好。

还是那句话,别人嚼碎了的东西终究是别人的,可锦上添花不可雪中送炭,你自己的知识体系终究要靠你自己一砖一瓦堆砌起来。

公众号后台有我联系方式,加我微信备注 计网 我发你上面两本书的高清 PDF 资源

我的 公众号『 飞天小牛肉 』;,专注分享计算机基础(数据结构 + 算法 + 计算机网络 + 数据库 + 操作系统 + Linux)、Java 技术栈等相关原创技术好文。关注公众号第一时间获取文章更新,后台回复 300 即可免费获取极客大学出品的 Java 面试 300 题,回复 Echo 免费领取 star 1k+ 社区项目的配套教程

Original: https://www.cnblogs.com/cswiki/p/15457224.html
Author: 飞天小牛肉
Title: 如何构建你自己的计算机网络知识体系?