innodb核心参数

1)默认存储引擎

default_storage_engine=innodb

2)独立表空间

innodb_file_per_table=1

3)"双一"标准——控制将redo log刷写到磁盘的设置。

innodb_flush_log_at_trx_commit=1

mysql中的数据写入磁盘过程以下图为例。redo log会先从redo buffer中刷写到文件系统缓存中,再从OS buffer中被刷写到磁盘上。
在这里插入图片描述
当参数为1,意味着每次事务提交时,redo log会先刷写到OS buffer中,并立即刷写到磁盘中,commit动作才算执行完成。

当参数为0,意味着每秒,日志从mysql buffer刷写到os buffer,并且刷写到磁盘。根据每秒的时间作为刷写磁盘的触发器,当断电时,就会丢失该秒提交的许多事务。

当参数为2,意味着每次提交事务,会把日志从mysql buffer刷写到os buffer中;每秒钟把日志从os buffer中刷写到磁盘中。

追求安全,选1;
追求性能,选0。


4)
控制buffer pool(ibd数据文件)和redo buffer的刷写策略,
从mysql buffer到DISK中日志和数据刷写的顺序如图所示。

innodb_flush_method=FSYNC

在这里插入图片描述




innodb_flush_method=O_DSYNC

在这里插入图片描述




innodb_flush_method=O_DIRECT

在这里插入图片描述


一般建议选择O_DIRECT。
考虑安全,选O_DIRECT;
考虑性能,选FSYNC。


5)
日志缓冲区大小设置

innodb_log_buffer_size

日志文件大小

innodb_log_file_size

redo文件的个数

innodb_log_files_in_group

6)

innodb_max_dirty_pages_pct=75

脏页刷写策略(脏页刷写策略的机制之一)
以上面的75为例,当脏页占用内存比例的75%时,会触发脏页“写”。希望脏页写的快一点,就要把该数据调小,可能会影响性能。

ps.还有其他触发脏页写的机制:
CSR;
redo被写满了。

7)最大并发连接数

max_connections=1024

8)当短时间内mysql的连接数据达到max_connections时,新来的请求将被存在堆栈中,等待某一连接释放资源,该堆栈的数量就是back_log。一般不建议设置过大,不然会给客户端一种“卡了”的体验,大量进程会夯住。

back_log=1024

9)关闭非交互式连接所等待的秒数(连接后啥都不干)

wait_timeout=300

关闭交互式连接所等待的秒数

interactive_timeout=1800

10)临时表的缓冲区或Myisam表的索引缓冲区

key_buffer_size=64M

内存临时表占内存和磁盘临时表之和的比例越高越好,判断如下:
在命令行输入

show status like "%created_tmp%";

然后计算公式

created_tmp_disk_tables/(created_tmp_disk_tables+created_tmp_tables)

该值控制在5%-10%以内最佳

11)排序缓冲区大小,为每个需要排序的线程提供一个该大小的缓冲区,但设置过高会耗尽系统内存资源。

sort_buffer_size=1M

读入缓冲区大小,同上,每个连接分配的内存独享。

read_buffer_size=1M

12)服务端接收的数据包大小

max_allowed_packet=256M

13)服务器线程缓存。在缓存数未达到上限时,断开连接的客户端线程将被放到缓存中来响应下一个客户请求,请求从缓存中读取;若缓存为空,则创建新的线程。

thread_cache_size=16

14)用该大小的内存来缓冲数据和索引

innodb_buffer_pool_size=2048M

最大设置为物理内存的80%,建议一般不超过70%。

15)“双一”标准

sync_binlog=1

将binlog刷写到磁盘后,才算事务提交成功,最安全;
参数为0,由文件系统而非mysql去控制缓存的刷新,性能最高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值