• mysql调优的几个参数


    1.innodb_change_buffer_max_size    change_buffer更新的缓冲区,占用的内存是buffer pool的。每次更新会先将更新存入change_buffer,避免读磁盘,然后在查询前会merge到磁盘,后台也会定时merge。

    参数值50  代表change_buffer占buffer pool内存的50%。

    注意:如果所有的更新后面,都马上伴随着对这个记录的查询,那么你应该关闭change buffer。而在 其他情况下,change buffer都能提升更新性能。

    2.innodb_flush_log_at_trx_commit  redo log 刷盘策略参数。参数值:0,1,2。默认为1,建议为1.

    innodb_flush_log_at_trx_commit=0,表示每隔一秒把log buffer刷到文件系统中(os buffer)去,并且调用文件系统的“flush”操作将缓存刷新到磁盘上去。也就是说一秒之前的日志都保存在日志缓冲区,也就是内存上,如果机器宕掉,可能丢失1秒的事务数据。https://www.cndba.cn/hbhe0316/article/22631

    innodb_flush_log_at_trx_commit=1,表示在每次事务提交的时候,都把log buffer刷到文件系统中(os buffer)去,并且调用文件系统的“flush”操作将缓存刷新到磁盘上去。这样的话,数据库对IO的要求就非常高了,如果底层的硬件提供的IOPS比较差,那么MySQL数据库的并发很快就会由于硬件IO的问题而无法提升。https://www.cndba.cn/hbhe0316/article/22631

    innodb_flush_log_at_trx_commit=2,表示在每次事务提交的时候会把log buffer刷到文件系统中去,但并不会立即刷写到磁盘。如果只是MySQL数据库挂掉了,由于文件系统没有问题,那么对应的事务数据并没有丢失。只有在数据库所在的主机操作系统损坏或者突然掉电的情况下,数据库的事务数据可能丢失1秒之类的事务数据。这样的好处,减少了事务数据丢失的概率,而对底层硬件的IO要求也没有那么高(log buffer写到文件系统中,一般只是从log buffer的内存转移的文件系统的内存缓存中,对底层IO没有压力)。

  • 相关阅读:
    宜未雨而绸缪,毋临渴而掘井。
    JDBC fetch size
    社会主义核心价值观
    JavaEE
    《夜泊牛渚怀古》
    JAVA "GMT+10" 和 "GMT+0010"
    乡村振兴1
    申论 题好文一半
    UCOS时钟与中断:
    任务的状态-挂起和恢复
  • 原文地址:https://www.cnblogs.com/onlyzhangmeng/p/16493424.html
Copyright © 2020-2023  润新知