Повлият ли на меня тупики, даже если я не использую транзакции? - PullRequest
0 голосов
/ 10 октября 2011

Мы хотим переключиться с MyISAM на InnoDB по нескольким причинам, но мы не намерены использовать транзакции с BEGIN / COMMIT и т. Д.

Есть ли случаи, когда возможны взаимоблокировки при использовании SELECT, INSERT, UPDATE и DELETE? Мы используем несколько JOIN, и у нас, конечно же, много INDEX.

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

Заранее спасибо за любые советы! :)

Ответы [ 2 ]

1 голос
/ 10 октября 2011

У вас есть 2 совершенно разных вопроса.

1 Да, взаимоблокировки могут возникать, даже если вы явно не используете транзакции, так как блокировка на уровне строк используется для всех операторов вставки / обновления / удаления. Подробнее здесь .

2 В общем, стресс / тестирование производительности не является тривиальной задачей, и не так много универсальных инструментов, которые справятся с этим. Как вы тестируете другие изменения базы данных (добавление / изменение / удаление индексов, изменение схемы таблицы)?

0 голосов
/ 10 октября 2011

Короче говоря, могут возникать взаимоблокировки, потому что (настройки по умолчанию AUTOCOMMIT = ON, то есть) каждый отдельный оператор (SELECT, UPDATE, INSERT, DELETE) рассматривается как отдельная транзакция в InnoDB - автоматически передается сразу после выполнения.

См .: Неявная фиксация транзакции и откат

Но, как указывает @Johan, они должны быть меньше проблемы в InnoDB, чем MyISAM, поскольку везде, где это возможно, используется блокировка на уровне строк.

Также проверьте ответ @ MarkR в этом вопросе, для более подробной информации: Объясните необъяснимый тупик


Для стресс-тестирования я слышал, но не использовал Super Smack , инструмент для тестирования и стресс-тестирования MySQL и PostgreSQL.

Но так как большинство пользователей, вероятно, будут использовать ваш веб-интерфейс, вам может подойти любой инструмент стресс-тестирования для такого интерфейса.

...