1 binlog 相关
-
sync_binlog:控制了事务提交时,binlog刷盘策略
- sync_binlog=0 的时候,表示每次提交事务,都只写到文件系统的 page cache,不 fsync,并没有把数据持久化到磁盘
- sync_binlog=1 的时候,表示每次提交事务都会执行 fsync,都会持久化到磁盘;
- sync_binlog=N(N>1) 的时候,表示每次提交事务都 写到文件系统的 page cache,但累积 N 个事务后才 fsync。
- binlog_format: 控制binlog格式;
-
binlog_row_image: 控制binlog在row格式下,每行数据的在binlog中记录的信息类型;
- full:记录更的行的所有的列值信息,默认值。
- minimal:仅仅记录被更改的以及能够唯一识别数据行的列值;
- noblob:记录所有的列值,但是BLOB 与 TEXT列除外(如未更改)。
2 redo log
-
innodb_flush_log_at_trx_commit: 控制redo log刷盘策略
- 0: 表示每次事务提交时都只是把 redo log 留在 redo log buffer 中 ;
- 1: 表示每次事务提交时都将 redo log 直接持久化到磁盘;
- 2: 表示每次事务提交时都只是把 redo log 写到 page cache。
3 锁相关
- innodb_lock_wait_timeout:锁等待时间
-
innodb_deadlock_detect:死锁检测策略
on: 默认值,开启死锁检测
off:关闭死锁检测
4 timeout相关参数
- connect_timeout:连接过程中握手超时时间
- interactive_timeout & wait_timeout: 连接在不活跃状态时的超时时间,在wait_timeout时间内没有进行任何操作,那么再次操作的时候就会提示超时,这是mysql client会重新连接。
- 如果通过交互的形式连接server, 那么wait_timeout会被设置成interactive_timeout;
- innodb_lock_wait_timeout & innodb_rollback_on_timeout: innodb中行锁的等待超时时间,如果超时,则当前语句会回滚。如果设置了innodb_rollback_on_timeout,则会回滚整个事务,否则,只回滚事务等待行锁的这个语句。
- lock_wait_timeout:元数据锁等待超时时间
5 复制相关
其他
lower_case_file_system:表示当前系统文件是否大小写敏感,只读参数,无法修改。
ON 大小写不敏感
OFF 大小写敏感lower_case_table_names
表示表名是否大小写敏感,可以修改。
lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。
lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作,大小写不敏感;-
lower_case_table_names在binlog中的表现:
lower_case_table_names = 1时:- ddl: 如果ddl含有的表名是大写的, ddl中sql依然是大写的;小写是小写;
- dml: 都是小写的;
ddl:
### use `test_22`/*!*/;
### SET TIMESTAMP=1638277376/*!*/;
create table T_UPER(id int(11) primary key)
dml:
### INSERT INTO `test_22`.`t_uper`
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
lower_case_table_names = 0(大小写敏感)时:
- ddl: 如果ddl含有的表名是大写的, ddl中sql依然是大写的;小写是小写;
- dml: 如果dml含有的表名是大写的, dml中sql依然是大写的;小写是小写;
ddl:
#211130 21:40:35 server id 761461042 end_log_pos 116532 Query thread_id=556 exec_time=0 error_code=0
use `gene`/*!*/;
SET TIMESTAMP=1638279635/*!*/;
create table T_UPPER(id int(10) primary key)
dml:
### INSERT INTO `gene`.`T_UPPER`
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
# at 129322
#211130 21:41:00 server id 761461042 end_log_pos 129349 Xid = 8034
COMMIT/*!*/;
- innodb_file_per_table
ON:每个 InnoDB 表数据存储在一个以 .ibd 为后缀的文件中。
OFF:表的数据放在系统共享表空间,也就是跟数据字典放在一起;
mysql5.6.6之后,默认是ON
-query_cache_type:查询缓存设置
未完待续...