zoukankan      html  css  js  c++  java
  • mysql服务器查询慢原因分析方法

    MySQL数据库在查询的时候会出现查询结果很慢,超过1秒,项目中需要找出执行慢的sql进行优化,应该怎么找呢,mysql数据库提供了一个很好的方法,如下: 
    mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。 
    1.需要使用打开记录查询慢的sql记录日志:

    查看慢查询时间
    show variables like 'slow%';
    查看设置多久是慢查询
    show variables like 'long%';
    修改慢查询时间
    set long_query_time=1;
    打开慢查询记录日志
    set global slow_query_log='ON';

    这里写图片描述
    2.进入到log_file的目录下即可查询哪些sql执行慢了。 
    3.然后就是进行优化执行慢的sql,加索引、修改查询方式等 
    4.另外比较有用的命令:

    查看哪些线程正在运行
    show full processlist
    查看最大连接数
    show variables like '%max_connections%';
    当前连接数
    show status like 'Threads_connected%';

    http://blog.csdn.net/lu_wei_wei/article/details/51242795

    在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下:

    KILL [CONNECTION | QUERY] thread_id

    每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。

    KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。

    如果您拥有PROCESS权限,则您可以查看所有线程。如果您拥有超级管理员权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。

    首先登录mysql,然后使用:
    show processlist;
    查看当前mysql中各个线程状态

    mysql> show processlist;  
    +------+------+----------------------+----------------+---------+-------+-----------+---------------------   
    | Id   | User | Host                 | db             | Command | Time  | State     | Info  
    +------+------+----------------------+----------------+---------+-------+-----------+---------------------   
    | 7028 | root | ucap-devgroup:53396  | platform       | Sleep   | 19553 |           | NULL   
    | 8352 | root | ucap-devgroup:54794  | platform       | Sleep   |  4245 |           | NULL  
    | 8353 | root | ucap-devgroup:54795  | platform       | Sleep   |     3 |           | NULL  
    | 8358 | root | ucap-devgroup:62605  | platform       | query   |  4156 | updating  | update t_shop set  |  

    以上显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.

    然后运行kill命令,命令格式如下:

    kill id;  
    - 示例:  
    mysql>kill 8358;
    ERROR 1317 (70100): Query execution was interrupted
  • 相关阅读:
    我要变牛逼
    java web
    导师选择
    2.1进程
    来到博客园写东西的第一天
    简单的页面布局
    html5
    第一个servlet程序
    java2D
    字节流 文件字节流 缓冲字节流
  • 原文地址:https://www.cnblogs.com/softidea/p/6102799.html
Copyright © 2011-2022 走看看