MySQL MyISAM INSERT медленно работает на Mac OS X - PullRequest
0 голосов
/ 19 августа 2010

Я страдаю от ужасного времени вставки на моем MacPro (четырехъядерной памяти 6G), работающем под управлением mysql 5.1.49 на снежном барсе 10.6.4.Я попытался выяснить, где проблема, и наконец пришел к выводу, что это должно быть связано с Mac OS X.

Вот тест, который я провел.У меня есть старый Dell с одним процессором Pentium и 256M памяти и 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

, выполняя тот же тест для моей базы данных MySQL на моем Mac иРезультат - ошеломляет

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 голосов
/ 20 августа 2010

Он явно делает что-то «плохое» в каждой строке - и учитывая медленную скорость, почти наверняка связанную с диском (что объясняет отсутствие каких-либо улучшений по сравнению со старым Pentium). Возможно, вам лучше воспользоваться форумами поддержки MySQL. Чувство инстинкта - вам может быть лучше поместить файлы данных в более классическую файловую систему Unix.

0 голосов
/ 24 августа 2010

Решением моей проблемы стал конфиг в /etc/my.cnf

sync_binlog=1

Понятия не имею, как он туда попал, но его снятие или установка sync_binlog = 0, безусловно, помогли.

0 голосов
/ 20 августа 2010

Звучит как настольные замки.Вы проверяли?

...