3.?InnoDB日志
3.1.?Innodb_log_buffer_size
3.1.1.?不要设置超过2-9M,除非你使用大量的超大文件,日志文件都会被刷新在每秒执行完毕后。
3.1.2.?检查innodb_os_log_written的增长来看你的日志文件的写入。
3.1.3.?Innodb日志是物理逻辑的,不是基于页的,所以他们是非常紧凑的。
3.2.?Innodb_flush_logs_at_trx_commit
3.2.1.?默认日志被刷新到磁盘上在每次事务提交后。这个是为了保证ACID(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)),所以开销非常大。
3.2.2.?可以设置2和0,如果你能接受丢失最后一次的事务。
4.?InnoDB日志重新设置大小
4.1.?这个不是简单修改选项和重启下能够完成的。
4.2.?首先要关闭MysQL服务器
4.3.?确认它是正常关闭的(检查有没有错误日志)
4.4.?移动所有InnoDB日志文件到其它地方
4.5.?修改配置文件然后重新启动MySQL服务器
4.6.?检查错误日志并查看是否产生新的日志文件。
5.?InnoDB_flush_method
5.1.?指定一个方法让innodb跟OS文件系统一起工作
5.2.?Windows:?总是使用没有buffer的IO方法
5.3.?Unix:可以使用fsync()或者O_SYNC/O_DSYNC进行刷新文件。
5.3.1.?Fsync()通常是更快的,允许累计多个写操作然后并发执行。
5.3.2.?一些操作系统允许关闭OS级别的缓冲针对InnoDB的数据文件。这样非常好,你总不希望数据被缓冲2次吧。
5.4.?Linux:O_DIRECT?使用直接的非缓冲IO。避免双重缓冲,可能会让写更慢。
6.?Innodb_file_per_table
6.1.?InnoDB可以存储每个表在单独的文件中。
6.2.?对于系统需要的主表空间还是需要的。
6.3.?能够帮助拆封不同的表到多个磁盘上。
6.4.?如果表被删除允许回收空间。
6.5.?有时候使用连续的fsync()写会更慢。
6.6.?当有大量的表的时候会增加启动和关闭的时间。
7.?其它文件IO设定
7.1.?Innodb_autoextend_increment–这个参数指定了对于共享表空间的增量(不是为了单独表空间的)。大的值可以有效的减少碎片。
7.2.?Innodb_file_io_thread–改变IO线程的数量,只对windows有效,所有4个线程可以做不同的事情。
7.3.?Innodb_open_file–这个值是用作指定每个表空间所允许打开文件的数量。如果你有很多表那就要增加它。
7.4.?Innodb_support_x–把这个值设置定为0的时候能够减少innodb的工作在事务提交时。Binlog?能够通过异步的方式同步。
8.?最小化重启时间
8.1.?Innodb缓存池可能有一些未写入到磁盘的数据。所以关闭的时候需要非常的时间。