我最近用4GB和OS X 10.6.8replace了我的老Core2duo Mac,用16GB的4核i5,SSD和10.7.2。
除mysqld以外,新系统的速度非常快。 轻负载是可以的,但是当我给它做一些真正的工作时,它的行为是非常奇特的。
我试过mysql-5.1.59-osx10.6-x86_64和mysql-5.5.16-osx10.6-x86_64,结果相似。
工作负载是一个batch file,需要从供应商那里获得一个大型的数据库,并将这些数据处理成我们可以在生产服务器的应用程序中使用的表单。 在旧的Mac上跑了3到4个小时。
在新的一个快速运行一段时间,然后陷入泥潭,之后,每个查询运行速度惊人缓慢与微不足道的IO和CPU挂钩在一个核心100%(batch file一次只运行一个查询MySQL CLI客户端)。 其他的应用程序也会慢下来,并使用大量的CPU,即使根据顶部,有10GB的非活动内存。
例如,现在mysqld正在运行
select t.t_id, a.a_id from t inner join a on ax=tx into outfile;
这个查询已经运行了大约一个小时,而旧系统只花了4分钟。 它在一个内核上使用100%的CPU,并且每隔一分钟左右就向outfile写一个1MB的数据块。 使用iosnoop我看不到从任何表a或吨(都MyISAM)的读取,所以我想他们caching在虚拟机。 相关的索引已预先加载到MyISAM密钥缓冲区中。 所以肯定没有IO瓶颈。 然而这个新系统比旧系统慢了许多(〜20倍)。
我有5.5的性能架构,但我不明白。 而我有dtrace,但我不是真的有能力驾驶它,而不是使用像iosnoop给定的公用事业。
可能会发生什么? 我能做些什么来发现相关信息?
编辑 :这是所有my.cnf已经为mysqld默认的一切。
[mysqld] datadir = /Users/fsb/mysql port = 3306 socket = /tmp/mysql.sock key_buffer_size = 1536M performance_schema = ON
你的观察并不令人意外。
如果有多年来我学到的东西是MySQL DBA,那就是:MySQL只是像configuration它时那样性能增强。 我可以绝对肯定地说,因为我已经安装了PostgreSQL和MySQL,并且已经看到PostgreSQL比MySQL“开箱即用”的“开箱即用”好得多。
为了在我自己的意见之外certificate这一点,
Percona最近在多个版本的MySQL中执行了“大逃杀”
所有的testing都是在MySQL未configuration的情况下执行的。 结果?
我能从中得到什么? 您必须configurationMySQL 5.5 / 5.6才能实现多核增强function 。
鉴于你正在使用的my.cnf,MySQL仍然在运行,所有的意图和目的,“开箱即用”。
请执行必要的尽职调查(查询调整,所需的configuration,数据库基础架构,正确的存储引擎select和调优),以使MySQL达到最佳效果。
你有足够的交换空间吗?
你有足够数量的/ tmp和/ var / tmp空间吗?
我只是滔滔不绝地猜测,但是MySQL数据库的tmp空间呢。