不要问我从哪里来,不要问我为什么?MYSQL版本用5.7
innodb_flush_log_at_trx_commit | 这个参数设置成 1 的时候,表示每次事务的 redo log 都直接持久化到磁盘。 |
sync_binlog | 这个参数设置成 1 的时候,表示每次事务的 binlog 都持久化到磁盘。 |
transaction-isolation | 事务隔离级别配置。 |
set autocommit=1 | 通过显式语句的方式来启动事务。不要让事务自动启动 |
innodb_undo_tablespaces | 设置成 2,如果真的出现大事务导致回滚段过大,这样设置后清理起来更方便。 |
innodb_lock_wait_timeout | 设置死锁超时,默认值是 50s |
innodb_deadlock_detect | 设置为on。主动回滚死锁链条中的某一个事务,让其他事务得以继续执行。 |
innodb_change_buffer_max_size | 设置为 50 的时候,表示 change buffer 的大小最多只能占用 buffer pool 的 50% |
innodb_stats_persistent | InnoDB 默认会选择 N 个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。而数据表是会持续更新的,索引统计信息也不会固定不变。所以,当变更的数据行数超过 1/M 的时候,会自动触发重新做一次索引统计。 设置为 on 的时候,表示统计信息会持久化存储。这时,默认的 N 是 20,M 是 10。 设置为 off 的时候,表示统计信息只存储在内存中。这时,默认的 N 是 8,M 是 16。 |
innodb_io_capacity | 设置成磁盘的 IOPS。磁盘的 IOPS 可以通过 fio 这个工具来测试 |
innodb_max_dirty_pages_pct | 脏页比例上限,默认值是 75%。 |
innodb_flush_neighbors | 刷脏页是否连坐。 |
innodb_file_per_table | 设置为 ON 表示的是,每个 InnoDB 表数据存储在一个以 .ibd 为后缀的文件中。 |
sort_buffer_size | 如果要排序的数据量小于 sort_buffer_size,排序就在内存中完成 |
tmp_table_size | 这个配置限制了内存临时表的大小,默认值是 16M。 |
sync_binlog | sync_binlog=0 的时候,表示每次提交事务都只 write,不 fsync; sync_binlog=1 的时候,表示每次提交事务都会执行 fsync; sync_binlog=N(N>1) 的时候,表示每次提交事务都 write,但累积 N 个事务后才 fsync。 |
innodb_flush_log_at_trx_commit | 为了控制 redo log 的写入策略。 设置为 0 的时候,表示每次事务提交时都只是把 redo log 留在 redo log buffer 中 ; 设置为 1 的时候,表示每次事务提交时都将 redo log 直接持久化到磁盘; 设置为 2 的时候,表示每次事务提交时都只是把 redo log 写到 page cache。 |
双1配置 一般情况下,把生产库改成“非双 1”配置,是设置 innodb_flush_logs_at_trx_commit=2、sync_binlog=1000。 | |
innodb_log_buffer_size | redo log buffer 占用的空间即将达到所设置的空间一半的时候,主动写盘。 |
slave-parallel-type | 配置为 DATABASE,使用 MySQL 5.6 版本的按库并行策略。 配置为 LOGICAL_CLOCK,表示的就是类似 MariaDB 的策略。 |
binlog_group_commit_sync_delay | 延迟多少微秒后才调用 fsync; |
binlog_group_commit_sync_no_delay_count | 表示累积多少次以后才调用 fsync。 |
binlog-transaction-dependency-tracking | COMMIT_ORDER,表示同时进入 prepare 和 commit 来判断是否可以并行的策略。 WRITESET,表示的是对于事务涉及更新的每一行,计算出这一行的 hash 值,组成集合 writeset。如果两个事务没有操作相同的行,也就是说它们的 writeset 没有交集,就可以并行。 WRITESET_SESSION,是在 WRITESET 的基础上多了一个约束,即在主库上同一个线程先后执行的两个事务,在备库执行的时候,要保证相同的先后顺序。 |
innodb_thread_concurrency | 控制 InnoDB 的并发线程上限。建议64--128 |
sql_safe_updates | 设置为 on |
innodb_buffer_pool_size | 表示缓冲池字节大小。一般建议设置成可用物理内存的 60%~80%。 |
join_buffer_size | join_buffer的长度,join查询会把表数据放入join_buffer,然后对比。 |