性能调优案例分享:Mysql的cpu过高
问题:
一个系统,Mysql数据库,数据量变大之后。mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务器的时候mysql cpu占用率为50%~60% 。
ps 1: 每个测试端所做事情就是插入记录,不过插入前会先查询一下是否已经有相同的记录,有的话就更新原有记录,没有就直接插入。
ps 2: CPU--Pentium Dual E1240 @ 1.60GHZ
内存--2G
OS--Windows 2003
调优思路:
采用replace into代替select、insert into会提高性能。
如果是innodb,建议配置参数要做优化。
InnoDB引擎在缺省参数配置下性能较差。
推荐InnoDB的配置(1G内存情况,主要运行mysql服务器):
innodb_buffer_pool_size = 600M
innodb_additional_mem_pool_size = 64M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 256M
#innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
innodb_file_per_table
其中innodb_flush_log_at_trx_commit和innodb_file_per_table对I/O性能影响最大。
备注:my-large.cnf等文件只是优化myisam引擎的参数