Mysql重要参数说明

时间:2022-05-03
本文章向大家介绍Mysql重要参数说明,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1)mysql double write buffer参数详解

什么是double write buffe?参数innodb_doublewrite=1打开

us_card_online_mysql [(none)] [15:03:01]> show global variables like '%innodb_doublewrite%';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_doublewrite | ON    |
+--------------------+-------+

是共享表空间的一段128个连续的page空间,刷新脏页时先通过memcpy函数将其复制到内存中doublewrite buffer,之后通过doublewrite buffer再分两次写,每次写入1M到共享表空间的物理磁盘上,然后马上调用fsync函数,同步磁盘。

2)自动提交autocommit=1

3)innodb_flush_log_at_trx_commit和sync_binlog

innodb_flush_log_at_trx_commit=0 每秒将log_buffer刷新到logfile,并且将日志同步刷新到磁盘。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。

innodb_flush_log_at_trx_commit=1 每次commit将log_buffer刷新到logfile,并且将日志同步刷新到磁盘

innodb_flush_log_at_trx_commit=2 每次commit将log_buffer刷新到logfile,但是flush(刷到磁盘)操作并不会同时进行,每秒将日志刷新到磁盘

4) sync_binlog=0 像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。

sync_binlog=1 MySQL在每写N次二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。如果启用了autocommit,那么每一个语句statement就会有一次写操作;否则每个事务对应一个写操作。

5) binlog_format:statment、row、mixed

statment sql语句型存储。将每条更改数据的sql记录到binlog。减少日志量,减少IO,缺点:不能复制默写特定的函数

row 行格式。只记录每行数据的更改的细节,不会记录sql上线文。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题。缺点:日志量大,修改表结构,全表update等

mixed 混合型格式。基于两者之间

6)innodb_flush_method:frsync()、O_DSYNC、O_DIRECT open write flush三个阶段

frsync() 默认方式,write系统缓存即返回success

O_DSYNC 日志是write完成,数据是flush系统缓存完成

O_DIRECT 日志write磁盘缓存返回success,数据直接flush到磁盘返回success

7)read_buffer_sizeread_rnd_buffer_size

顺序读取,无法使用索引的全表扫描或索引全表扫描

随机读取,根据索引读取表数据

8)IO threads>

innodb_write_io_threads:默认8

innodb_read_io_threads:默认8

MASTER threads>

innodb_purge_threads:刷新提交的undo

bulk_insert buffer thread: 为一次插入多条新记录的INSERT命令分配的缓存区长度

insert buffer:位于共享表空间中,对于非聚集索引的插入和更新,先判断索引页是否在缓冲池中,若不在插入到insert buffer中

innodb_change_buffering=all: 参数可选的值为:inserts、deletes、purges、changes、all、none.用来开启各种Buffer的选项

innodb_change_buffer_max_size=25:默认为25,表示最多使用1/4的缓冲池内存空间。而需要注意的是,该参数的最大有效值为50。

9)

thread_pool_max_threads=300: 线程池最大线程

innodb_thread_concurrency:并发线程数

innodb_thread_sleep_delay:微秒后尝试重练,如果第二次扔无法获得,则进入fifo队列休眠

innodb_concurrency_tickets:该请求被接受后,获得一个默认500次的通行证

10)

innodb_file_per_table=1: 独立表空间

innodb_autoextend_increment=64:表空间自增64M,该参数可以动态修改

11)

tmp_table_size=132M: 临时内存表大小

max_heap_table_size=64M:用户可以创建的内存表大小

这两个参数决定了如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下

Created_tmp_disk_tables/Created_tmp_tables<5%

12)

back_log: 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它

13)自增参数

auto_increment_offset=1: 自增值的偏移量

auto_increment_increment=2: 自增值的自增量

如果在原有的序列中强制插入一个值,整体序列不受影响