• MySQL 5.7性能调优


    MySQL 5.7具有更好的默认值。Morgan Tocker创建了一个页面,其中包含MySQL 5.7中功能的完整列表(http://www.thecompletelistoffeatures.com/,并且是一个很好的参考点。例如,默认情况下设置了以下变量

    • innodb_file_per_table = ON
    • innodb_stats_on_metadata =OFF
    • innodb_buffer_pool_instances = 8(如果innodb_buffer_pool_size <1GB,则为1)
    • query_cache_type = 0; query_cache_size = 0; (禁用互斥锁)

    在MySQL 5.7中,只有四个真正重要的变量需要更改。但是,对于特定的工作负载和硬件,可能还需要调整其他InnoDB和全局MySQL变量。

    首先,将以下设置添加到[mysqld]部分下的my.cnf。您将需要重新启动MySQL:

    [mysqld]
    # other variables here
    innodb_buffer_pool_size = 1G # (adjust value here, 50%-70% of total RAM)
    innodb_log_file_size = 256M
    innodb_flush_log_at_trx_commit = 1 # may change to 2 or 0
    innodb_flush_method = O_DIRECT
    描述
    变量
    innodb_buffer_pool_size 从总RAM的50%开始。不需要大于数据库大小
    innodb_flush_log_at_trx_commit

    1(默认)

    0/2(更高的性能,更低的可靠性)

    innodb_log_file_size 128M – 2G(不需要大于缓冲池)
    innodb_flush_method O_DIRECT(避免双重缓冲)
     

    下一步是什么?

    这些是任何新安装的良好起点。还有许多其他变量可以提高某些工作负载的MySQL性能。通常,我会设置一个MySQL监视/绘图工具(例如,Percona Monitoring and Management平台),然后检查MySQL仪表板以执行进一步的调整。

    我们可以根据图表进一步调整什么?

    InnoDB缓冲池大小看一下图:

    如我们所见,由于我们有可用的RAM并且空闲页面的数量与总的缓冲池相比很小,因此我们可能会受益于将InnoDB缓冲池的大小稍微增加到〜10G。

    InnoDB日志文件大小。看一下图:

    正如我们在这里看到的,InnoDB通常每小时写入2.26 GB的数据,超过了日志文件的总大小(2G)。现在我们可以增加innodb_log_file_size  变量并重新启动MySQL。或者,使用“显示引擎InnoDB状态”来计算合适的InnoDB日志文件大小

    其他变量

    还有许多其他的InnoDB变量可以进一步调整:

    innodb_autoinc_lock_mode

    设置  innodb_autoinc_lock_mode = 2(交错模式)可以消除对表级AUTO-INC锁定的需要(并且当使用多行插入语句通过auto_increment主键将值插入表中时,可以提高性能)。这需要binlog_format ROW   或MIXED   (并且ROW是MySQL 5.7中的默认值)。

    innodb_io_capacity innodb_io_capacity_max

    这是一种更高级的调整,仅在您始终执行大量写入操作时才有意义(不适用于读取操作,即SELECT)。如果您确实需要对其进行调整,最好的方法是知道系统可以执行多少IOPS。例如,如果服务器有一个SSD驱动器,我们可以设置innodb_io_capacity_max 6000  和innodb_io_capacity 3000  (最大值的50%)。最好运行sysbench或其他任何基准测试工具来基准化磁盘吞吐量。

    但是我们是否需要担心此设置?看一下缓冲池的“ 脏页 ”图:

    在这种情况下,脏页的总数很高,看来InnoDB跟不上刷新它们的速度。如果我们有一个快速磁盘子系统(即SSD),则可能会受益于增加innodb_io_capacity  和innodb_io_capacity_max。

    结论或TL; DR版本

    新的MySQL 5.7默认值对于一般用途的工作负载要好得多。同时,我们仍然需要配置InnoDB变量以利用包装盒上的RAM量。安装后,请按照下列步骤操作:

    1. 将InnoDB变量添加到my.cnf(如上所述),然后重新启动MySQL
    2. 安装监视系统(例如,Percona监视和管理平台)
    3. 查看图表,确定MySQL是否需要进一步调整
  • 相关阅读:
    redis-LinkedList
    Jedis(java操作redis数据库技术)
    jquery判断表单内容是否为空
    jQuery单选框的回显
    使用jQuery重置(reset)表单的方法
    BootstrapValidator 解决多属性被同时校验问题
    模态框被遮罩层遮挡
    python 高阶函数
    python 函数式编程
    python 生成器
  • 原文地址:https://www.cnblogs.com/jinli1771/p/13163252.html
Copyright © 2020-2023  润新知