2014-11-28 3 views
0

моего заявления обновления являетсяMySQL заявление 5.6.21 обновления происходит очень медленно, когда log_bin на

update ptest set amount = amount - 2000 where id = 2 

стола Ptest является

CREATE TABLE `ptest` (
    `id` bigint(19) NOT NULL AUTO_INCREMENT, 
    `developerId` bigint(19) DEFAULT NULL, 
    `appId` bigint(19) DEFAULT NULL, 
    `caller` varchar(20) DEFAULT NULL, 
    `callerDisplay` varchar(20) DEFAULT NULL, 
    `called` varchar(20) DEFAULT NULL, 
    `calledDisplay` varchar(20) DEFAULT NULL, 
    `startTime` datetime DEFAULT NULL, 
    `endTime` datetime DEFAULT NULL, 
    `callTime` int(11) DEFAULT NULL, 
    `callId` varchar(32) NOT NULL , 
    `billingTime` int(11) DEFAULT NULL, 
    `callResult` varchar(10) DEFAULT NULL, 
    `amount` bigint(20) DEFAULT NULL , 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=200001 DEFAULT CHARSET=utf8; 

, когда системная переменная log_bin была установлена: log_bin = mysql_bin, JMeter результат теста - 237,4 транзакции в секунду. , когда log_bin является комментарием # log_bin = mysql_bin, результат теста jmeter равен 3500.2 транзакции в секунду.

на обеих настройках скорость вставки аналогична, около 8000 транзакций в секунду.

Почему log_bin имеет ужасное влияние производительности на mysql? Как повысить производительность обновления при включении log_bin?

ответ

0

Короткий ответ нет. Вы не можете улучшить производительность при двоичном протоколе. Я думаю, что это один из самых больших компромиссов в MySQL. Длительный ответ исходит из статьи Барона Шварца, ведущего автора блога производительности MySQL:

Включение двоичного журнала значительно снижает производительность MySQL. Это не является самой регистрацией, это проблема - запись журнала - , как правило, не так много дополнительной работы. Это обеспечивает согласованность и прочность, которая является дорогостоящей. Промывка его на диск добавляет вызов fsync для каждой транзакции. И сервер выполняет транзакцию XA между InnoDB и двоичным журналом. Это добавляет больше вызовов fsync, а вызывает конфликт мьютексов и предотвращает групповое совершение и, возможно, другие вещи, которые сейчас не приходят в голову.

Вы можете прочитать full article here.

Смежные вопросы