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 条评论
登录 后参与评论

相关文章

来自专栏前端儿

【Echo】实验 -- 实现 C/C++下TCP, 服务器/客户端 通讯

1160
来自专栏北京马哥教育

MongoDB多纬度监控方法详解

一、mongostat工具方法 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如...

4025
来自专栏陈树义

Java并发编程:线程的基本状态

一、线程的基本状态 线程基本上有5种状态,分别是:NEW、Runnable、Running、Blocked、Dead。 1)新建状态(New) 当线程对象对创建...

3287
来自专栏林欣哲

Spring的事务管理

713
来自专栏风中追风

volatile和synchronized 实现原理的差别

提到volatile 和 synchronized 的时候不得不提到的一个东西就是JMM(java Memory Model)java内存模型。

5349
来自专栏Golang语言社区

几种服务器端IO模型的简单介绍及实现(下)

5、使用事件驱动库libevent的服务器模型 Libevent 是一种高性能事件循环/事件驱动库。 为了实际处理每个请求,libevent 库提供一种事件机制...

3579
来自专栏Java架构沉思录

如何优雅地用Redis实现分布式锁

在学习Java多线程编程的时候,锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同...

38717
来自专栏java一日一条

Java Socket 编程原理及教程

对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进...

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

分布式事务原理与实践

事务简介 事务的核心是锁和并发,采用同步控制的方式保证并发的情况下性能尽可能高,且容易理解。这种方式的优势是方便理解;它的劣势是性能比较低。 计算机可以简单的理...

16710
来自专栏Java Edge

Redis实现分布式锁Redis分布式锁安全和活性失效保障为什么基于故障转移的实现还不够Redis分布式锁防死锁单Redis实例实现分布式锁的正确方法Redlock算法这个算法是异步的么?失败时重试释

3097

扫码关注云+社区