на много пользователей) использовать MySQL? Знакомый говорит что у этой СУБД большая проблема с многопоточностью.
Объясняется это так: при выполнении транзакции MySQL блочит ВСЮ таблицу, в других же СУБД, том же Postgre, таблица не блочится, блочится только запись к которой обращается транзакция. Так ли это, кто разбирается, прошу немного пролить свет на этот вопрос )
Ну например весь бекенд Яндекс Еды и Такси работает на мускуле. Не знаю, как сейчас, но раньше это точно было так. Что касается блокировок-то они очень разные бывают. Я лично не юзал мускуль, но судя по доке, дефолтный уровень-как раз row-level locking. Транзакция скорее всего выставляет на таблицу разделяемую блокировку (чтобы во время работы транзации никто не мог таблицу дропнуть целиком или поменять), но транзакциям, которые совместно меняют строки в таблице, это мешать не должно.
и да и нет у mysql несколько вариантов движков для таблиц старый myisam который как раз блочит всю таблицу на транзакциях и условно новый (почти 20 лет не возраст) innodb (уже дефолт в последних версиях) который как раз row-level блокировки
Вот хорошая статья. How Quora scaled MySQL to 100k+ Queries Per Second
это мифы из эпохи myisam. c innodb таблицами mysql лочит обычно только то что нужно, но есть нюанс. если предикат апдейта не индексирован и идет фуллскан, фуллскан начнет лочить все записи таблицы. т.е. надо следить что бы модифицирующие запросы по идексу шли
Обсуждают сегодня