我在雪豹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语句。
答案 0 :(得分:0)
听起来像桌子锁。你检查了吗?
答案 1 :(得分:0)
显然在每一行都做了“糟糕”的事情 - 并且考虑到速度几乎肯定与磁盘有关(这可以解释旧Pentium没有任何改进)。你可能会更好地使用mySQL支持论坛。直觉 - 您可能最好将数据文件放到更经典的Unix文件系统上。
答案 2 :(得分:0)
我的问题的解决方案是/etc/my.cnf中的配置
sync_binlog=1
我不知道它是如何实现的,但取出它或设置它sync_binlog = 0肯定有帮助。