2012-02-06 2 views
0
  1. Когда я OPTIMIZE, REPAIR или ANALYZE таблицу MySQL, будет ли это остановить все другие операции, от запуска, пока процесс не завершится (INSERT, SELECT и т.д.)? Должен ли я часто ANALYZE стол?Пару MySQL Вопросы

  2. Если несколько пользователей делают INSERT, UPDATE, SELECT и т.д. операций в то же время на разных местах по всем моему сайту, будут все операции правильно выполнять на фоне высокой нагрузки? Или есть определенный код, который я должен настроить, чтобы убедиться, что они выполнены правильно?

Дальнейшие уточнения? Я буду рад дать больше.

Благодарим за помощь.

ответ

1
  1. http://dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html
  2. Это то, что система управления базами данных должна беспокоиться. Вы ничего не можете сделать о синхронизации.
+0

Большое спасибо за эту ссылку. Это довольно аккуратно - я могу сделать все 4 операции с одной строкой кода. Но он блокирует стол. – Hope4You

3
  1. Все три операции создает блокировку чтения. OPTIMIZE и REPAIR создадут блокировку записи. Таким образом, вы не можете выполнять дальнейшую операцию чтения, если ANALYZE запущен и не работает операция чтения/записи при запуске OPTIMIZE и REPAIR.

  2. Не гарантируется, что последовательность запросов одного пользователя не будет перекрывать последовательность запросов другого пользователя. Вы должны использовать Transaction.

+0

Вы говорите, что команда MySQL никогда не может быть выполнена, потому что она накладывается на другую? Примечание: Мне все равно, выполняются ли все операции в САМОЕ ВРЕМЯ или нет, я просто хочу убедиться, что все они получают казнены. – Hope4You

+0

Я сказал, что перекрыл, а не переопределил. Один пользователь может отправить 3 запроса и другую отправить 4. Последние 4 запроса могут выполняться между тремя запросами первого пользователя. Это перекрытие. Это может случиться. Но все запросы будут выполнены. Чтобы остановить это неатомное поведение, используйте транзакцию. –

+0

Спасибо. Теперь я понимаю. – Hope4You

Смежные вопросы