mysql 数据库的参数文件是以文本的形式进行存储的,能够用vim进行修改 my.ini my.conf等mysql
SHOW VARIABLES 能够查看mysql 配置参数sql
SHOW VARIABLES LIKE 'log_error'\G;数据库
SHOW VARIABLES LIKE 'long_query_time'\G;vim
MySQL 慢查询的相关参数解释:slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。 async
slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。 log-slow-queries :旧版(5.6如下版本)MySQL数据库慢查询日志存储路径。能够不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。能够不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。 log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。 log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据<br>库支持同时两种日志存储方式,配置的时候以逗号隔开便可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,所以对于须要启用慢查询日志,又需<br>要可以得到更高的系统性能,那么建议优先记录到文件。
慢查询日志配置性能
默认状况下slow_query_log的值为OFF,表示慢查询日志是禁用的,能够经过设置slow_query_log的值来开启,以下所示:spa
mysql> show variables like '%slow_query_log%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /usr/local/mysql/data/localhost-slow.log | +---------------------+------------------------------------------+ 2 rows in set (0.00 sec) mysql> set global slow_query_log=1; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%slow_query_log%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/data/localhost-slow.log | +---------------------+------------------------------------------+ 2 rows in set (0.00 sec) #使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。若是要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)
-s, 是表示按照何种方式排序 c: 访问计数 l: 锁定时间 r: 返回记录 t: 查询时间 al:平均锁定时间 ar:平均返回记录数 at:平均查询时间 -t, 是top n的意思,即为返回前面多少条的数据; -g, 后边能够写一个正则匹配模式,大小写不敏感的; 好比: 获得返回记录集最多的10个SQL。 mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log 获得访问次数最多的10个SQL mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log 获得按照时间排序的前10条里面含有左链接的查询语句。 mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log 另外建议在使用这些命令时结合 | 和more 使用 ,不然有可能出现刷屏的状况。 mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
默认文件名: 主机名.log线程
二进制日志 记录了对Mysql数据库执行更改的全部操做,可是不包括SELECT 和 SHOW ;设计
格式:3d
二进制日志的做用
本地链接mysql 可使用unix域套接字文件 通常在/tmp/mysql.sock
进程号文件
frm 文件 描述表结构的定义
innodb 采用表空间设计(tablespace) 在默认配置下 又一个初始大小为10MB的 ibdata1的文件 能够指定多个文件组成一个表空间。
多个磁盘的文件组成表空间 能够分担负载。全部基于innodb引擎的表数据 都会记录到共享空间中。若是开启了innodb_file_per_table 会层层一个独立的表空间,表名.ibd
独立的表空间里面只存储该表的数据、索引、插入缓冲、BITMAP等信息,其余信息存放在共享表空间中。
在默认状况下,innodb存储引擎目录下 有ib_logfile0 和 ib_logfile1的文件,这就是重作日志。每一个innodb引擎 至少有一组重作日志,其中有两个重作日志文件,能够放在不一样的磁盘上 保证高可用,每一个重作日志文件大小一致,并采用循环写入的方式,先写日志文件1,达到文件末尾的时候,切换到日志文件2,若是日志文件2也被写满,再切回到日志文件1
重作日志的大小很是重要,不能设置的太大,设设置的太大,恢复须要很长的时间,过小也不行,过小了致使一个事务日志来回切换文件,而且频繁发生async checkpoint,致使性能抖动。重作日志里面有一个capacity变量,最后检查点不能超过这个阀值,不然必须把缓冲池里面的脏页列表写回到磁盘里面,这个会阻塞用户线程。
和binlog 的区别 , binlog不区分存储引擎,redolog 仅限于innodb , 其次 记录的内容也不同 innodb 无论statment row mixed 记录的都是逻辑日志,而redo log 记录的是页的物理变化。还有binlog 只写一次,可是redo log 在事务中不断写入。
redolog 格式: redo_log_type+ space +page_no + redolog_body
为了保证事务的ACID的持久性,必须将innodb_flush_log_at_trx_commit=1 , 也就是在事务提交的时候,必须确保写入重作日志,若是宕机,就能够经过redo log 恢复。