MYSQL日志定位性能问题

来源:互联网 发布:联通e是什么网络 编辑:程序博客网 时间:2024/05/21 10:03

MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。

MySQL日志文件系统的组成
   a、错误日志:记录启动、运行或停止mysqld时出现的问题。
   b、通用日志:记录建立的客户端连接和执行的语句。
   c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
   d、二进制日志:记录所有更改数据的语句。还用于复制。
   e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。


日志必然会拖慢系统速度,所以日志记录默认是关闭的,定位问题时需要打开日志记录。

首先我们打开慢日志记录,用于记录消耗时间超过某个范围的sql,来定位增删改查sql的执行效率。

show variables like 'version'; //查看数据库版本号

  • +---------------+------------+  
  • | Variable_name | Value      |  
  • +---------------+------------+  
  • | version       | 5.5.39-log |  
  • +---------------+------------+

    show variables like '%slow%'; //查看日志是否开启

  • +---------------------+---------------------------------+  
  • | Variable_name       | Value                           |  
  • +---------------------+---------------------------------+  
  • | log_slow_queries    | OFF                             |  
  • | slow_launch_time    | 2                               |  
  • | slow_query_log      | OFF                             |  
  • | slow_query_log_file | /var/lib/mysql/suse11b-slow.log |  
  • +---------------------+---------------------------------+ 

    set global slow_query_log='ON';   //打开日志记录

    set global long_query_time=1;//将全局级别long_query_time设置为1秒

    set session long_query_time=1;//将session级别long_query_time设置为1秒

    show variables like '%long_query_time%';//查看慢日志时间范围,超过时间范围的sql才会被计入日志

  • +-----------------+-----------+  
  • | Variable_name   | Value     |  
  • +-----------------+-----------+  
  • | long_query_time | 10.000000 |  
  • +-----------------+-----------+ 




  • 原创粉丝点击