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团长

Java Web从前端到后台常用框架介绍

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解...

703
来自专栏coder修行路

Django进阶之session

基于cookie做用户验证时:敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 s...

1769
来自专栏IT技术精选文摘

Redis入门指南

什么是Redis? Redis 是一个作为“数据结构服务器”来使用的开源工具,它可以存储不同的数据类型并可被快速的存取,因为数据类型的值存储在内存中. 如果你...

1756
来自专栏我是攻城师

ElasticSearch并发操作之乐观锁的使用

3403
来自专栏Java Edge

大道缓存1 缓存特征2 缓存介质3 缓存分类和应用场景缓存实战

用户请求从界面(浏览器/App)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容。

271
来自专栏行者常至

(Java)请求方式之GET、POST 浅析

·不同的请求方式不仅仅在数据传输时会有所不同,在表单提交及服务器端处理时也会采用不同的方式。而区分不同种类的请求方式也会使得浏览器采用不同的缓存方式处理后续请求...

702
来自专栏北京马哥教育

Linux 内存中的 Cache 真的能被回收么?

在 Linux 系统中,我们经常用 free 命令来查看系统内存的使用状态。在个 RHEL6 的系统上,free 命令的显示内容大概是这样一个状态: ? 这里...

3605
来自专栏Python小屋

Python实现本机网络流量监视器

本文要点在于Python扩展库psutil提供的方法net_io_counters()可以查看本机网络收发包和流量情况,稍加封装就可以实现流量监视器。 impo...

3156
来自专栏FreeBuf

Python的无状态SYN快速扫描

起因 freebuf中有一篇文章,讲述了基本的扫描原理并给出了简易的python代码,几种扫描方式中我发现SYN的扫描准确率高返回的信息明确,而且不会留下握手的...

2316
来自专栏MYSQL轻松学

MySQL Innodb MTR源码解析

最近看了下Mysql innodb源码MTR模块,了解源码能帮助DBA更熟悉数据库运行原理、更容易定位排查问题。那么什么是Mtr?Mtr究竟是用来做什么的?围绕...

3616

扫描关注云+社区