использует команду базы данных в MySQL блокировать всю базу данных? - PullRequest
1 голос
/ 21 декабря 2011

У меня серьезная проблема с производительностью в mysql.
Механизм хранения - myisam.
Я нахожу такой шаблон в медленном журнале:
Если команда обновления медленная, перед ней будет use database_name.и время блокировки будет долгим.

использует ли команда database_name блокировку всей базы данных?Будет ли команда database_name очищать кеш, а затем иметь плохие последствия в команде обновления?

Ответы [ 3 ]

2 голосов
/ 21 декабря 2011

Нет, команда use database не требует больших затрат.

Но инструкция UPDATE блокирует всю таблицу, если вы используете MyISAM. Возможно, вы видите несколько операторов UPDATE, стоящих в очереди друг против друга.

Я рекомендую использовать InnoDB для всех таблиц. Не только благодаря поддержке блокировки на уровне строк (фактически, MVCC лучше, чем блокировка на уровне строк), но и InnoDB превосходит MyISAM с точки зрения устойчивости к повреждению данных.

1 голос
/ 21 декабря 2011

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

Если у вас медленное время запросов, возможно, посмотрите, не выполняете ли вы какие-либо интенсивные обновления базы данных, поскольку MyISAM блокирует таблицу (а не строку, как InnoDB) при обновлениях.

1 голос
/ 21 декабря 2011

use database блокирует не базу данных. Он просто предоставляет базу данных по умолчанию для ссылки в будущих запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...