Дозвуковой: Выберите в представлении, блокирует обновление таблицы? - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть веб-сайт, работающий и работающий сейчас. Я использую Subsonic для обработки соединений с базой данных и т. Д. Я получаю сообщение об ошибке истекшего времени при обновлении таблицы (скажем, сотрудник). Когда я проверяю sp_who2, я вижу приостановленное соединение для PID, который обновляется с помощью блока by anothor pid, поэтому я запускаю профилировщик и выясняю, когда когда-либо возникает это приостановленное соединение, заблокированный pid является оператором выбора в представлении (скажем, ActiveEmployees, то же самое, что и таблица, но с некоторыми условиями).

Любой знает, почему оператор Select в представлении может вызвать сбой при обновлении. Если это другое (например, выбор не удается из-за обновления) может быть разумным. Могу ли я сделать выбор в представлении без блокировки таблицы?

PS: я использую Sql server 2005 и дозвуковую версию 2.2.

1 Ответ

0 голосов
/ 02 февраля 2010

Вы можете добавить (nolock) подсказку к оператору select в представлении, если вас не заботит точность возвращаемых данных (возможно, он вернет некоммитированные строки). Мы также столкнулись с таймаутами, когда операторы select сканировали таблицу, в которую вставлялся другой поток. Я решил проблему, добавив соответствующий индекс, который используется нашим выбором.

...