Innodb性能优化之参数设置
2015-03-31 15:09
453 查看
现在,Innodb是Mysql最多使用的存储引擎。其性能一直广受关注。本文通过基本的参数设置来提高其性能。
使用的基测工具是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都有了显著的提高。
我们可以通过
PgSQL
mysql> show global status like 'Innodb_os_log_written';select sleep(60);show global status like 'Innodb_os_log_written';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Innodb_os_log_written | 3584 |
+-----------------------+-------+
1 row in set (0.00 sec)
+-----------+
| sleep(60) |
+-----------+
| 0 |
+-----------+
1 row in set (1 min 0.04 sec)
+-----------------------+--------+
| Variable_name | Value |
+-----------------------+--------+
| Innodb_os_log_written | 19200112 |
+-----------------------+--------+
1 row in set (0.00 sec)
mysql> select (19200112-3584)*60 /1024/1204 as MB_PER_HOUR;
+--------------+
| MB_PER_HOUR |
+--------------+
| 934.21641404 |
+--------------+
1 row in set (0.00 sec)
根据文中所述,日志大小可以满足服务器活动1小时的容量。上面可以看到1小时的容量是934M。MySQL默认使用两个日志文件,应该设置innodb_log_file_size=500M。
http://blog.bruceding.com/233.html
Mysql优化相关命令
Mysql索引相关知识点总结
MYSQL优化技巧(一)
MYSQL添加索引的处理方式【转载】
innodb_buffer_pool_size
缓冲池大小。这是innodb参数中最重要的设置。务必要设置正确的大小,确保innodb分配了足够的内存。一般值为可用内存的70%~80%。下面两幅图是此参数设置前后的对比。使用的基测工具是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/。这里只是简单的总结下。我们可以通过
PgSQL
mysql> show global status like 'Innodb_os_log_written';select sleep(60);show global status like 'Innodb_os_log_written';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Innodb_os_log_written | 3584 |
+-----------------------+-------+
1 row in set (0.00 sec)
+-----------+
| sleep(60) |
+-----------+
| 0 |
+-----------+
1 row in set (1 min 0.04 sec)
+-----------------------+--------+
| Variable_name | Value |
+-----------------------+--------+
| Innodb_os_log_written | 19200112 |
+-----------------------+--------+
1 row in set (0.00 sec)
mysql> select (19200112-3584)*60 /1024/1204 as MB_PER_HOUR;
+--------------+
| MB_PER_HOUR |
+--------------+
| 934.21641404 |
+--------------+
1 row in set (0.00 sec)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | mysql> show global status like 'Innodb_os_log_written';select sleep(60);show global status like 'Innodb_os_log_written'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | Innodb_os_log_written | 3584 | +-----------------------+-------+ 1 row in set (0.00 sec) +-----------+ | sleep(60) | +-----------+ | 0 | +-----------+ 1 row in set (1 min 0.04 sec) +-----------------------+--------+ | Variable_name | Value | +-----------------------+--------+ | Innodb_os_log_written | 19200112 | +-----------------------+--------+ 1 row in set (0.00 sec) mysql> select (19200112-3584)*60 /1024/1204 as MB_PER_HOUR; +--------------+ | MB_PER_HOUR | +--------------+ | 934.21641404 | +--------------+ 1 row in set (0.00 sec) |
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
Related Posts
Mysql锁机制深入研究Mysql优化相关命令
Mysql索引相关知识点总结
MYSQL优化技巧(一)
MYSQL添加索引的处理方式【转载】
相关文章推荐
- Tomcat性能优化(二) 启动参数设置
- Hbase,Zookeeper性能优化之-参数设置
- Oracle性能优化经验分享之系统参数设置
- Oracle性能优化经验分享之系统参数设置
- my.cnf参数配置实现InnoDB引擎性能优化
- Java 性能优化 - Sun Hotspot JDK JVM 参数设置
- my.cnf参数配置:InnoDB引擎性能优化
- MyISAM转innodb后的参数设置优化
- Java 性能优化 - IBM JDK JVM 参数设置
- Java 性能优化 - Sun Hotspot JDK JVM 参数设置
- Java 性能优化 - Sun Hotspot JDK JVM 参数设置
- JAVA性能优化—IBM JDK JVM参数设置
- hive性能优化及参数设置
- Oracle设置系统参数进行性能优化
- JAVA性能优化—IBM JDK JVM参数设置
- SQL优化:设置性能相关的服务器参数
- sybase参数设置及性能优化解释
- sybase参数设置及性能优化解释
- web.config优化网站性能设置
- web.config优化网站性能设置