文章目录
1. 参数
1. 动态参数:
show variables like 'read_buffer_size';
-- 1. 设置会话参数
set session read_buffer_size = ***;
-- 2. 设置全局参数
set global read_buffer_size = ****;
-- 未曾变化:新开数据库实例才生效
select @@global.read_buffer_size;
-- 未曾变化:新开数据库实例才有变化
select @@session.read_buffer_size;
2. 静态参数:只读,不允许修改
2. 错误日志
-- 查看错误日志的地址
show variables like 'log_error%';
3. 慢查询日志
记录超过一定时间的sql语句
-- 查看相关参数
show variables like '%slow%';
-- 查看是否开启慢查询配置
show variables like 'slow_query_log';
-- 查看慢查询时间:大于这个时间才会被记录起来
show variables like 'long_query_time';
-- 未使用索引便记录到慢查询
show variables like 'log_queries_not_using_indexes';
-- mysql提供给系统的命令
mysqldumpslow:通过命令去查看慢查询日志,比如查看最慢的10条数据等
-- 可将慢查询记录指定到表中,而不是以日志文件形式存储
show create table mysql.slow_log;-- slow_log慢查询表
show variables like 'log_output';-- 查看慢查询输出的形式,file是文件,table是表
set global log_output='table';
4. 重做日志 redo log:物理页面
重做日志是保证数据库持久性和可靠性的一种日志,保存到物理磁盘中,若是数据库发生宕机,可通过重做日志来恢复数据。
事务开始时 -> 写入redo log,重做日志缓冲区 -> 将重做日志刷出到磁盘 -> 事务结束 -> 重做日志占用的空间可被覆盖,重做日志是可被覆盖的,当事务结束后就能被覆盖掉了,因为此时数据已经持久化到磁盘中了。
5. 回滚日志 undo log:逻辑格式
保存了事务开始前的数据版本,当需要回滚时,逻辑恢复上一个版本数据,而物理磁盘是恢复不了到之前那种状态的。
6. 二进制日志binary log
执行数据库的update和insert,delete等修改语句,会将操作记录起来,即使没有影响行数,也会记录起来。二进制日志可以利用来恢复数据,也能用来复制数据,同步几台mysql之间的数据
-- 查看数据库数据存放的物理位置
show variables like 'datadir';
-- list出物理文件
system sudo ls -lh /var/lib/mysql
h:参数是将字节转换为m,k,g等更可看形式
- 未提交(uncommitted)二进制会被记录到一个缓存中,提交时才刷出到日志文件
- 记录格式:binlog_format参数
- statement:记录的是逻辑的SQL语句
- row:记录表的更改情况,消耗的日志空间大(事务级别可为 read commited)P78页
- mixed:不同情况交替使用statement和row形式
6.1 表结构定义文件:frm结尾
6.2 重做日志与二进制日志文件的区别
- 记录内容:重做日志是记录对页的更改的物理情况;二进制日志文件是对事务操作进行记录,逻辑日志。
- 记录范围:重做日志针对不同引擎有不同的记录日志;二进制日志则全部都是记录在一起。