MySQL的MyISAM INSERT性能在Mac OS X上很慢

时间:2010-08-19 18:17:03

标签: mysql performance macos osx-snow-leopard

我在雪豹10.6.4上运行mysql 5.1.49的MacPro(四核6G内存)上遭受了糟糕的INSERT时间。我试图找出问题所在,最后得出的结论是它必须与Mac OS X有关。

这是我跑的测试。我有一个带有单个pentium cpu和256M内存的旧dell和mysql 5.1.44。 ip2nation.sql文件包含不同的插入行,如

INSERT INTO ip2nation (ip, country) VALUES(0, 'us');
INSERT INTO ip2nation (ip, country) VALUES(687865856, 'za')
...

通过网络插入这些功能非常好

time mysql -h dell test < ip2nation.sql

real    0m22.352s
user    0m0.587s
sys     0m1.556s

在我的mac上对我的mysql数据库运行相同的测试,结果令人难以置信

time mysql test < ip2nation.sql 

real    23m46.254s
user    0m1.199s
sys     0m1.808s

这两个命令都是从OSX运行的。当我将SQL INSERT语句的格式更改为

INSERT INTO ip2nation (ip, country) VALUES
(0, 'us')
,(687865856, 'za')
...
OSX上的次数好多了

time mysql test < ip2nation.sql 

real    0m1.183s
user    0m0.021s
sys     0m0.009s

有人可以向我解释一下吗?我无法重写我的所有应用程序以使用这种形式的INSERT语句。

3 个答案:

答案 0 :(得分:0)

听起来像桌子锁。你检查了吗?

答案 1 :(得分:0)

显然在每一行都做了“糟糕”的事情 - 并且考虑到速度几乎肯定与磁盘有关(这可以解释旧Pentium没有任何改进)。你可能会更好地使用mySQL支持论坛。直觉 - 您可能最好将数据文件放到更经典的Unix文件系统上。

答案 2 :(得分:0)

我的问题的解决方案是/etc/my.cnf中的配置

sync_binlog=1

我不知道它是如何实现的,但取出它或设置它sync_binlog = 0肯定有帮助。