zoukankan      html  css  js  c++  java
  • Innodb性能优化之参数设置

    现在,Innodb是Mysql最多使用的存储引擎。其性能一直广受关注。本文通过基本的参数设置来提高其性能。

    innodb_buffer_pool_size

    缓冲池大小。这是innodb参数中最重要的设置。务必要设置正确的大小,确保innodb分配了足够的内存。一般值为可用内存的70%~80%。下面两幅图是此参数设置前后的对比。

    57a15b877665d18943a7f709b021aed1

    4aaa8975e4e382e6c2ad2e9fdfafd4f3
    使用的基测工具是sysbench。测试语句为:
    sysbench –num-threads=16 –test=oltp –mysql-table-engine=innodb –mysql-host=localhost –mysql-db=test –oltp-table-size=5000000 –mysql-user=root –mysql-password=mysql run

    图一为默认参数配置。图二设置innodb_buffer_pool_size大小为2G。可以看到TPS和QPS都有了显著的提高。

    innodb_buffer_pool_instances

    缓冲池实例数量。在MySQL5.5中默认值为1,在MySQL5.6中为8.这个值范围是1~64.适当提高其值,在高并发环境中可以减少全局互斥锁的争用。

    innodb_log_file_size

    innodb日志文件大小。足够大的Innodb事务日志是至关重要的,可以提高写性能。在MySQL5.6中默认值为50M。在很多工作环境中,这值还是太小了。具体如何设置可以参考http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/。这里只是简单的总结下。
    我们可以通过

    根据文中所述,日志大小可以满足服务器活动1小时的容量。上面可以看到1小时的容量是934M。MySQL默认使用两个日志文件,应该设置innodb_log_file_size=500M。

    innodb_log_buffer_size

    innodb日志缓存大小。innodb会把数据更改记录写入到日志缓存中。如果缓存满了,才会写入到磁盘中。增大innodb_log_buffer_size,会有效的减少I/O次数。一般的值为4M或者8M。

    innodb_flush_log_at_trx_commit

    事务提交刷新日志标记。当此值为1时,在每次事务提交后会刷新日志缓存,并写入到磁盘中。这保证了数据的完整性,但是对性能有一定的影响。值为2时,每次事务提交后,日志缓冲区会被刷新到系统文件缓存。这是性能最优的。但是一旦系统崩溃,可能会导致部分事务数据的丢失。

    innodb_thread_concurrency

    innodb线程并发数。默认值是0,一般情况下不需要改变。如果遇到并发问题,可以把值设置为CPU和磁盘数量的2倍。此值可以动态改变而无需重启MySQL服务器。

    http://blog.bruceding.com/233.html

  • 相关阅读:
    猎户、双子、英仙
    第二卦,还叫我保持现状?
    昨晚的第三卦,就快万劫不复了
    明天要出去办事,看看情况
    luogu P3939 数颜色 |vector
    luogu P2701 [USACO5.3]巨大的牛棚Big Barn |动态规划
    luogu P2345 奶牛集会 |排序+树状数组
    luogu P4943 密室 |最短路
    luogu P4343 [SHOI2015]自动刷题机 |二分答案
    luogu P3110 [USACO14DEC]驮运Piggy Back |最短路
  • 原文地址:https://www.cnblogs.com/seasonzone/p/4380978.html
Copyright © 2011-2022 走看看