Privet wrote:Вряд ли. Deadlock никогда не рассасывается. Два процесса мёртво держат друг друга за глотку. Во всяком случае это моё понимание как программиста. Может быть, в терминах баз денных это означает иное. На форуме же перегрузка потихоньку по мере выполнения запросов рассасывается. Это хорошо видно в администраторе.
Это зависит от того, есть ли в MySQL автоматическое детектирование дедлоков - тут вроде у есть люди, имеющие реальный опыт работы с этим продуктом, для них это должно быть элементарным вопросом. Системы без такового обычно имеют таймаут, после чего дедлок через некоторое время разрешается сам собой. Но обычно дедлок не сопровождатется зашкалом CPU. И если же я правильно понял, что как раз именно это и имеет место быть. Тогда это может быть "convoy phenomena" - неприятное явление, хорошо известное в базах данных аж с начала 70-х и причиной которого является неаккуратное (хотя и функционально 100% правильное) программирование синхронизации доступа к очень активно используемому ресурсу. Все "главные" современные СУБД (MySQL excluded - ничего про него не знаю) этой проблемы не имеют, потому что заведомо проектируются так, чтобы её избежать.
<added>
Полез на сайт MySQL.com и нашёл, что если в качестве подсистемы хранинения и обработки транзакций использовать ещё одно финское техническо чудо - InnoDB (которое его автор лет 5 назад пытался поочерёдно продать Oracle, IBM и MS) - то MySQL действительно имет автоматическое разрешение дедлоков. Я уже много хорошего слышал про этот InnoDB, парень, который его делал видимо достаточно грамотен. Однако про конвои на их сайте нет ничего. Оно, конечно, может ровным счётом не означать, но тем не менее...
</added>
<added more>
After a little more googling...
Surely enough Heikki Tuuri - the guy who wrote the InnoDB Engine - is very well aware of the convoy problem and does know a fact or two about the internal mechanics of MS SQL Server, including the UMS - UserModeScheduler. However, аccording to the following, InnoDB doesn't appear to employ any real anti-convoy techniques, except some hard-coded threading-related limits:
http://www.distlab.dk/mysql-4.1/html/sr ... ource.html
Which makes me believe that the most popular storage engine that comes with MySQL and that is bound to be much simpler than more "advanced" InnoDB would hardly be convoy-aware at all.
</added more>