Стоимость MySQL: InnoDB на Cascade или MyISAM отдельно удаляет - PullRequest
0 голосов
/ 10 июля 2011

Мне интересно, какой из них был бы более экономичным с точки зрения ресурсов, используемых сервером: On Cascade Delete, который пересекает несколько таблиц или несколько операторов удаления с помощью механизма MyISAM?

Ответы [ 2 ]

2 голосов
/ 10 июля 2011

У каскадного удаления есть несколько преимуществ:

  • он может использовать транзакцию, поэтому, если одно удаление не удастся, все не удастся, и данные останутся согласованными
  • InnoDB использует блокировки на уровне строк. Чтобы удалить запись из MyISAM, вся таблица должна быть заблокирована. Если есть много одновременных запросов, InnoDB будет быстрее.
  • Как сказал @Itay Moav, при каскадном удалении вы будете выполнять только один запрос, а при множественном удалении - несколько запросов.
1 голос
/ 10 июля 2011

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

...