• 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.如果一个数据库里面的表特别多的情况下,可以适当增大。

  • 读取参数:

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

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

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

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

  • 写入参数:

  • 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

  • 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

文章作者: 小俊
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小俊丶Eternally博客
Mysql 学习分享 Linux MySQL innodb
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝