美文网首页
(mysql)利用redolog刷盘控制解决导入海量数据太慢的问

(mysql)利用redolog刷盘控制解决导入海量数据太慢的问

作者: 兔兔二号 | 来源:发表于2022-03-03 15:57 被阅读0次
    MySQL支持用户自定义在commit时如何将log buffer中的日志刷log file中。这种控制通过变量 innodb_flush_log_at_trx_commit 的值来决定。该变量有3种值:0、1、2,默认为1。但注意,这个变量只是控制commit动作是否刷新log buffer到磁盘。
    1.innodb_flush_log_at_trx_commit =1

    事务每次提交都会将log buffer中的日志写入os buffer并调用fsync()刷到log file on disk中。这种方式即使系统崩溃也不会丢失任何数据,但是因为每次提交都写入磁盘,IO的性能较差。

    2.innodb_flush_log_at_trx_commit =0

    事务提交时不会将log buffer中日志写入到os buffer,而是每秒写入os buffer并调用fsync()写入到log file on disk中。也就是说设置为0时是(大约)每秒刷新写入到磁盘中的,当系统崩溃,会丢失1秒钟的数据。

    3.innodb_flush_log_at_trx_commit =2

    每次提交都仅写入到os buffer,然后是每秒调用fsync()将os buffer中的日志写入到log file on disk。

    以上出自https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html

    当我们在导入大量数据时,控制innodb_flush_log_at_trx_commit =2,即可节省导入时间,待测试

    相关文章

      网友评论

          本文标题:(mysql)利用redolog刷盘控制解决导入海量数据太慢的问

          本文链接:https://www.haomeiwen.com/subject/drcurrtx.html