隔离级别
-
查看当前事务隔离级别
select @@tx_isolation;
-
设置隔离级别
set transaction isolation level +隔离级别 //设置read uncommitted级别: set session transaction isolation level read uncommitted; //设置read committed级别: set session transaction isolation level read committed; //设置repeatable read级别: set session transaction isolation level repeatable read; //设置serializable级别: set session transaction isolation level serializable;
慢日志
-
查看慢日志
show variables like '%qurey%' long_query_time:查询超时时间(超过这个时间就是慢查询,可以自己设置) 默认是 10毫秒 slow_query_log:慢日志功能开关 slow_query_log_file:慢日志存放文件,自己设置(支持.log文件)
-
开启慢日志
set global slow_qurey_log = "ON";
-
慢日志输出查看
show variables like '%log_output%';
og_output
参数是指定日志的存储方式。log_output='FILE'
表示将日志存入文件,默认值是’FILE’。log_output='TABLE'
表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'
。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件
。 -
查看表里慢日志
select * from mysql.slow_log;
-
日志分析工具
mysqldumpslow
#得到返回记录集最多的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
BinLog日志的三种模式
-
Statement level优点:
1、解决了row level的缺点,不需要记录每一行的变化。
2、日志量少,节约IO,从库应用日志块。 -
Statement level缺点
一些新功能同步可能会有障碍,比如函数、触发器等。
-
row level的优点:
1、记录详细
2、解决statement level模式无法解决的复制问题。(某些特定情况下的存储过程,或fuction,以及trigger的调用或处罚无法被正确复制的问题。) -
row level的缺点
日志量大,因为是按行来拆分。
-
mixed level:
实际上就是前两种模式的结合,在mixed模式下,mysql会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也是在statement和row之间选择一种
-
查看当前binlog日志模式 默认-
Row
show variables like '%binlog_format%';
-
设置binlog的模式
set global binlog_format='MIXED';
-
读取binlog日志
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000011