MySQL的日志基础知识及基本操作学习教程

2019-01-04 19:38:27于丽

注释:其中这个慢查询时间并不是只表示语句自身执行超过10秒还包含由于其他资源被征用造成阻塞的查询执行时间或其他原因等都被记录到慢查询中。所以这个慢查的时长表示从查询开始到查询结束中间包含可能的任何原因所经历的所有时间。

测试是否可以记录日志:

mysql> set globalslow_query_log=1; #开启慢查询日志
Query OK, 0 rowsaffected (0.35 sec)
mysql> setsession long_query_time=0.001; #更改时间(当前session中,退出则重置)
Query OK, 0 rowsaffected (0.00 sec)
mysql> set globallong_query_time=0.001; #更改时间(全局中,重启服务则重置) mysql> SHOWVARIABLES LIKE 'long%'; #查询定义时间
+-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time |0.001000 | +-----------------+----------+ 1 row in set (0.00sec) mysql> showglobal variables like "%slow%"; #查看慢查询日志开启状态 +---------------------+-----------------------------+ | Variable_name | Value | +---------------------+-----------------------------+ |log_slow_queries | ON | |slow_launch_time | 2 | |slow_query_log | ON | |slow_query_log_file | /mydata/data/stu18-slow.log | +---------------------+-----------------------------+ 4 rows in set (0.03sec)

查看慢查询日志:

mysql> use mysql mysql> selectuser,host,password from user where user="root";
+------+------------------+----------+ | user | host | password | +------+------------------+----------+ | root |localhost | | | root |stu18.magedu.com | | | root |127.0.0.1 | | | root | ::1 | | +------+------------------+----------+ 4 rows in set (0.08sec) #查询时间为0.08 mysql> systemmore /mydata/data/stu18_slow.log #查询慢查询日志记录信息 /usr/local/mysql/bin/mysqld,Version: 5.5.33-log (Source distribution). started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument >>>>>>>>>>>>>>>>部分已省略>>>>>>>>>>>>>> # Time: 13100723:46:33 # User@Host:root[root] @ localhost [] # Query_time:0.108459 Lock_time: 0.000216 Rows_sent:4 Rows_examined: 6 SETtimestamp=1381160793; selectuser,host,password from user where user="root";

事务日志:

事务日志(InnoDB特有的日志)可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把改修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的,我们通常称之为预写式日志,修改数据需要写两次磁盘。