|
|
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как можно узнать строчная или страничная блокировка таблицы используется и как ее можно изменить? Подключаюсь через ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 08:55:04 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
Запустите Profiler и настройте отслеживание событий, связанных с блокировками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 09:15:49 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
Изменить блокировку, ИМХО, можно с помощью подсказок для блокировок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 11:18:02 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
2 Белов Владимир Можно указать тип блокировки ( HOLDLOCK, UPDLOCK etc) с помощью хинтов в запросе, но не факт, что получите ожидаемый физический уровень блокировки ( строка, страница ), т.к. оптимизатор может изменять (повышать) уровень блокировки в зависимости от плана выполнения запроса. 2 Sharapp Если Вы пытаетесь управлять блокировками из клиентского приложения (как в десктопных СУБД), то лучше сразу плюньте (слюной) на это, т.к. не годится переносить функции сервера на клиента. Это однозначно тупиковый подход. Здесь уже неоднократно обсуждались эти вопросы, так что можете воспользоваться поиском по темам с целью прояснить для себя этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 11:31:11 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
2 Jimmy. Так ты не те хинты приводишь... Есть еще хины TabLock, RowLock, PagLock... Ты полагаешь, что оптимизатор с ними все равно сделает по-своему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 14:58:45 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
2 Garya С TABLOCK он уже врядли что-нить сделает, а вот с ROWLOCK, PAGLOCK - запросто. Например, если при указанном хинте ROWLOCK группа записей находится на одной странице, то серверу проще поднять несколько RL блокировок до одной PL (ресурсов меньше требуется). А за некорректность перечисления - да, есть такое, но я надеялся на магические etc и любознательность аудитории. Сорри, если зря :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 18:16:13 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
Я полагал, что ежели я сказал SQL-серверу: update SomeTable set SomeField=SomeField+1 with (RowLock) ..то он уже не перейдет ни на страничную блокировку, ни, тем более на, табличную. Потому как нафига же тогда хинты ставить, если они просто мимо ушей пропускаются? SQL-сервер, ИМХО, в этом случае слопает кучу оперативной памяти для того, чтобы сохранить в ней информацию о каждой заблокированной строке, и эскалация блокировок происходить не будет. Эскалация может происходить, когда подобный хинт не указан, либо указан хинт другого рода. В своем ответе я уверен. Потому как указанием хинта with (RowLock) на практике борюсь с дедлоками, возникающими как раз из-за эскалации блокировок. Именно этот хинт позволяет избежать эскалации и заблокировать только те записи, которые на самом деле модифицируются текущим запросом, оставив незаблокированными те записи, которые может попытаться в этот момент модифицировать другой юзер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 19:21:25 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
Пардон, конечно же: update SomeTable with (RowLock) set SomeField=SomeField+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2002, 19:25:08 |
|
||
|
Как определить тип блокировки?
|
|||
|---|---|---|---|
|
#18+
2 Garya Проверил практически. Есть таблица, где несколько тысяч записей (менее 10000). Сделал так (MS SQL7 + SP3): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Позволю себе сделать вывод, что я был прав. Однако, если это все же не так, хотелось бы услышать окончательный и аргументированный ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2002, 11:49:08 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32058692&tid=1819577]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 366ms |

| 0 / 0 |
