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_size\read_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: 自增值的自增量

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

原文发布于微信公众号 - MYSQL轻松学(learnmysql)

原文发表时间:2015-09-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程技术

MySQL 中基于 XA 实现的分布式事务

Xa主要规定了RM与TM之间的交互,下面来看下XA规范中定义的RM 和 TM交互的接口:

943
来自专栏GopherCoder

Django:web框架的学习(2)

1284
来自专栏不止思考

架构师带你玩转分布式锁

当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端处理,不能并发的执行,否者就会出现同一时...

771
来自专栏乐沙弥的世界

使用mysqlbinlog提取二进制日志

    MySQL binlog日志记录了MySQL数据库从启用日志以来所有对当前数据库的变更。binlog日志属于二进制文件,我们可以从binlog提取出来生...

1372
来自专栏乐沙弥的世界

system sys,sysoper sysdba 的区别

Oracle 中sys,system帐户以及登陆时的normal,sysoper,sysdba是经常容易混淆的几个概念,下面详细讲述了

673
来自专栏运维前线

Elasticsearch API 使用介绍

API文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.htm...

2176
来自专栏北京马哥教育

zabbix之日志文件监控

作者:hu_wen 来源:http://blog.csdn.net/hu_wen/article/details/70142060 日志item介绍 ...

5154
来自专栏木子昭的博客

<入门级>Mysql账户管理(账户的添加,授权,改密,删除)

Mysql账户管理入门 可以这样讲,能否对数据库的账户进行基本的管理,区分"小白"和"老鸟"的一个衡量标准. Mysql数据库管理系统中,root用户拥有最高权...

29910
来自专栏小二的折腾日记

面试总结-链接

https://blog.csdn.net/CCUTwangning/article/details/70153589 天下无难试之Redis面试题刁难大全 h...

601
来自专栏坚毅的PHP

my linux FAQ

用命令查询系统是32位还是64位 getconf LONG_BIT or getconf WORD_BIT 例如: [root@sy02 /]# getconf...

3163

扫码关注云+社区