MySQL хранится в Proc - тупик приведет к производительности? - PullRequest
0 голосов
/ 08 апреля 2011

Будет ли тупик вызывать проблемы с производительностью, такие как время задержки выполнения?

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Когда вы получаете тупик, одна из задействованных транзакций откатывается.Откат транзакции является относительно дорогим для сервера и требует усилий, которые в противном случае он потратил бы на реальную работу;Более того, первоначальная транзакция должна быть выполнена снова.

Однако вы должны стремиться иметь очень небольшое количество взаимоблокировок в вашем приложении.Если 1% транзакций зашло в тупик, это может быть слишком много.

К счастью, разработчики InnoDB знали, что взаимоблокировки являются потенциальной проблемой производительности, и пытались сделать откат InnoDB транзакцией, которая выполнила «меньше работы».Какая бы транзакция не выполнялась с момента ее запуска, будет выполнена откат.Поэтому, если одна транзакция выполнила миллион вставок, а другая - только одну, транзакция с одной вставкой, вероятно, будет отменена.

InnoDB не очень эффективен для отката больших транзакций.В одной системе я видел, что транзакция откатывается за 45 минут.

Вообще говоря, если вы обнаружите, что получаете много взаимоблокировок, это может быть связано с проблемой разработки приложения.Например, если вы регулярно выполняете огромные запросы на обновление, это может указывать на то, что ваша база данных недостаточно нормализована (например).

1 голос
/ 08 апреля 2011

Взаимные блокировки препятствуют выполнению запросов из-за столкновения ресурсов.Единственный обычный способ для механизма базы данных обрабатывать взаимоблокировки - это убить один из процессов в тупике и, если возможно, перезапустить его.

Так что, да, взаимоблокировка вызовет проблемы с производительностью, так как ядро ​​должно будет обнаружитьтупик, а затем справиться с этим.Как правило, рекомендуется избегать взаимных блокировок.

Здесь много информации http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...