服务器上MYSQL的配置

不要问我从哪里来,不要问我为什么?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,然后对比。

   

 

 

おすすめ

転載: blog.csdn.net/u010261924/article/details/109151850
おすすめ