• mysql插入数据慢 innodb_flush_log_at_trx_commit


    原来是1,改成0

    innodb_flush_log_at_trx_commit=0

    innodb_flush_log_at_trx_commit<br><br>该参数控制重做日志写入磁盘的过程。我们知道 InnoDB 使用“Write Ahead Log”策略来避免数据丢失问题,即依靠重做日志来保证数据能在丢失后进行恢复。因此,InnoDB 重做日志的持久化非常重要。

     
    该参数的有效值有 0、1、2:
     
    0:事务提交时,不将重做日志缓冲写入磁盘,而是依靠 InnoDB 的主线程每秒执行一次刷新到磁盘。因此如果 MySQL 发生宕机,那么就有可能丢失一部分事务。
     
    1:事务提交时,会将重做日志缓冲写入磁盘,并且立即刷新(fsync())。注意,因为操作系统的“延迟写”特性,此时的刷入只是写到了操作系统的缓冲区中,因此执行同步操作才能保证一定持久化到了硬盘中。
     
    2:事务提交时,会将重做日志缓冲写入磁盘,但是不会立即进行刷新操作,因此只是写到了操作系统的缓冲区。此时若操作系统发生宕机而没有即使的同步,也可能会丢失一部分数据。
     
    可以看到,只有1才能真正地保证事务的持久性,但是由于刷新操作 fsync() 是阻塞的,直到完成后才返回,我们知道写磁盘的速度是很慢的,因此 MySQL 的性能会明显地下降。如果不在乎事务丢失,,0和2能获得更高的性能。
  • 相关阅读:
    webshell
    隐写术的总结
    A&DCTF
    JavaScript数组去重方法汇总
    Reverse Words in a String III
    DOM编程 --《高性能JavaScript》
    数据存储 --《高性能JavaScript》
    加载和执行 --《高性能JavaScript》
    算法和流程控制 --《高性能JavaScript》
    重载类型转换操作符(overload conversion operator)
  • 原文地址:https://www.cnblogs.com/showker/p/14957986.html
Copyright © 2020-2023  润新知