个人认为比较重要的MySQL—innodb参数详解

innodb_io_capacity:脏页的刷新的数量,可以动态调整,默认是200,该参数的设置取决于硬盘的IOPS的大小,IOPS就是每秒的读写次数。

innodb_scan_lru_depth:该参数是5.6版本新增的,它会影响page cleaner线程每次刷新脏页的数量,这是一个每一秒循环一次的线程。

bulk_insert_buffer_size:该参数调高mysql的数据插入的效率,默认设置是8M

innodb_flush_log_at_trx_commit:该参数指定了Innodb在事务提交后的日志写入频率。

为0时:日志会每秒写入到日志文件并刷写到磁盘,每次事务的提交不会有任何影响,就是说,日志的刷写操作和事务提交操作没有关系,在这种情况下mysql的性能是最优的,但是如果MySQL奔溃或者服务器宕机,就会最后1s丢失日志和数据.

为1时:每次事务提交的时候,日志会被立马写入到日志文件并刷写到磁盘,这是默认设置,这也是最安全的,但是由于每次事务都需要进行磁盘IO,所以也是最慢的

为2时:每次事务提交会写入日志文件,并不会立马刷写到磁盘,日志文件会每秒刷写一次到磁盘,假如mysql奔溃,但是日志已经写入到系统缓存了,所以不会丢失数据,在服务器奔溃或者宕机的时候,才会出现最后1秒的数据丢失。

innodb_buffer_pool_instances:可以开启多个缓冲池,把需要的数据缓冲到缓冲池中,可以进行并行的内存读写,默认设置为8,为了提高查询的并发性。

key_buffer_size:指定索引缓冲区的大小,他的大小决定索引的处理速度,尤其是读的速度。

innodb_open_files:限制打开innodb能打开的表的数据,默认是300.如果一个数据库里面的表特别多的情况下,可以适当增大。

(1)读取参数:

innodb_buffer_pool_size:理论上越大越好,建议服务器的内存的60%

innodb_read_io_thread:读线程个数,默认是4个,根据处理器内核数决定

read_buffer_size:是MySQL的读取缓冲区大小。对标进行顺序扫描的请求将分配一个读取缓冲区,MySQL会为它分配一段内存缓冲区。该变量控制缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行的太慢,可以通过增加该变量值提高性能。

sort_buffer_size:是一个connection级的参数,每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存,并不是越大越好。由于是connection级别的参数,过大的设置加上高并发会耗尽系统内存资源。

(2)写入参数

bulk_insert_buffer_size:调整该参数来提高数据插入的效率,默认是8M

innodb_double_write:提高innodb的可靠性,用来解决部分写的问题

innodb_write_io_thread:写线程个数,默认是4,可根据处理器内核数来决定

inno_flush_method:这个参数控制innodb数据文件以及redo log的打开,刷写模式。有三个值可以选择,分别是:fdatasync,O_DSYNC,O_DIRECT,默认是fdatasync,调用fsync去刷新数据文件与redo log的buffer;为O_DSYNC时,innodb会使用O_sync方式打开和刷写redolog,用fsync刷写数据文件;为O_DIRECT时,innodb使用O_DIRECT打开数据文件,使用fsync刷写数据文件和redo log

(3)I/O

innodb_log_buffer_size:innodb将日志写入磁盘文件前的缓冲大小。理想值为1-8M。大的日志缓冲允许事务允许时不需要将日志保存入磁盘而只到事务被提交。

innodb_flush_log_at_trx_commit:此参数和sync_binlog控制MySQL磁盘写入策略以及数据安全性的关键参数,当两个参数都设置为1的时候性能最差,推荐是2;为0时,日志会每秒刷写到磁盘,很快,MySQL性能最好,但是如果MySQL奔溃了,会丢失数据;为1时,每次事务提交,都会写入日志文件并刷写到磁盘,这是最安全的配置,但是由于每次事务都需要进行大量的磁盘IO,所以也很慢,占用过多资源;为2时,每次事务提交会写入日志文件,但是不会里面刷写到磁盘,日志文件会每秒刷写一次到磁盘。这次如果没有啥情况奔溃了,,由于日志已经写入,到系统缓存了,所以并不会丢失数据,在服务器出现问题的情况,通常只会丢1-2s的日志或者数据。

innodb_file_io_threads:这个参数默认是4,作用是innodb使用后台线程初六数据页上的读写IO请求。

innodb_max_dirty_pages_pct: 脏页占buffer最大比例,默认值是75

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员同行者

优化mysql服务器

1262
来自专栏杨建荣的学习笔记

datapump简介(一) (r6笔记第2天)

datapump是在10g之后推出的新特性,无论从功能还是性能上,都有一定的改进,可以说在功能上丰富了很多,在性能上也提升了很多。可以说exp/imp中能实现的...

2655
来自专栏数据和云

性能优化:调整 I/O 相关的等待

编辑手记:对Oracle数据库进行调整优化,基本上最终都可以归结到I/O调整上,因此,了解如何来优化Oracle数据库的I/O对于一个DBA来说就显得至关重要。...

2703
来自专栏云计算教程系列

如何在Ubuntu 18.04上使用PostgreSQL 10设置逻辑复制

在为生产设置应用程序时,准备好多个数据库副本通常很有用。保持数据库副本同步的过程称为复制。复制可以为大量同时读取操作提供高可用性水平扩展,同时减少读取延迟。它还...

3175
来自专栏维C果糖

详述 MySQL 导出数据遇到 secure-file-priv 的问题

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv opti...

3586
来自专栏LanceToBigData

MySQL集群(一)之主从复制

前面学完了JDBC,接下来带大家感受一下MySQL集群!其实什么是MySQL集群?简单的说就是一群机器(服务器)的集合,它们连在一起来工作。 其实各种数据库都有...

2805
来自专栏码农二狗

使用shell搜索匹配文件

1253
来自专栏我是攻城师

Elasticsearch如何动态维护一个不可变的倒排索引

4129
来自专栏从零开始的linux

启动级别

# vim /etc/inittab # Default runlevel. The runlevels used are: # 0 - halt (Do ...

2968
来自专栏FreeBuf

搭建属于你自己的维基站点:MediaWiki

MediaWiki 是一个全球著名的开源的,运行于 PHP+MySQL 环境下的 wiki 程序 。例如,全球最大的 wiki 项目 维基百科,就是使用 Med...

5496

扫码关注云+社区

领取腾讯云代金券