|
|
|
Deadlock'и в MsSQL 7
|
|||
|---|---|---|---|
|
#18+
При обращении к SQL 7 с ASP-страниц вылезает (время от времени) сообщение: Your transaction (process ID #8) was deadlocked with another process and has been chosen as the deadlock victim. Rerun your transaction. Эта страница перегружается каждые 15-120 секудн. Примерно каждые 2-3 минуты вылетает с указанной ошибкой... Запрос на этой странице работает только на чтение данных. Есть одно но - таблица из которой считываются данные, всё время (ежесекундно) меняется - добавляются новые записи... Может кто знает, как этому можно помочь? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2002, 16:57:37 |
|
||
|
Deadlock'и в MsSQL 7
|
|||
|---|---|---|---|
|
#18+
Тщательно проанализируйте код, который проводит изменения на предмет потенциальных deadlock\'ов - триггера, хр. процедуры. Продумайте расстановку хинтов на блокировки при запросах. Постарайтесь свести к минимуму количество блокируемых данных и "облегчить" типы блокировок - т.е. поменьше эксклюзивных, побольше shared. Если "на глазок" побороть неудалось, то попробуйте потрассировать сами deadlock\'и - что с чем конфликтует. В BOL это есть, там нужно установить некоторые trace флаги и потом покопаться в полученном логе. Похожие темы:\r /topic/9704\r /topic/9703 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2002, 17:18:48 |
|
||
|
Deadlock'и в MsSQL 7
|
|||
|---|---|---|---|
|
#18+
Вся проблема в том, что там всё просто до не могу... :) Вообще говоря, это всего лишь счётчик рейтинга сайтов... Т.е. посещения сайтов ежесекундно обновляют базу (просто добавление записи)... Но когда я пытаюсь выполнять запрос на просмотр онлайновых посетителей... время от времени эти процессы сталкиваются... Хотя не понятно с чего -- в одном запросе идёт просто insert, а в другом только select... :/ Я смотрел на Спайлоге -- они там показывают псевдоонлайновых посетителей -- с задержкой в несколько минут... А у меня - всё в реальном масштабе времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2002, 17:49:58 |
|
||
|
Deadlock'и в MsSQL 7
|
|||
|---|---|---|---|
|
#18+
Можно поступить как эти парни со Спалога - пишешь в файло а потом засасываешь его разом с определенным интервалом. Разве плохо так? И еще поменьше всяких хинтов импользуй - сервер всяко лучше знает что ему надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2002, 18:03:39 |
|
||
|
Deadlock'и в MsSQL 7
|
|||
|---|---|---|---|
|
#18+
Если ошибка не так страшна, используй with (nolock) в селекте, правда данные будут получаться чуть грязноватые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2002, 18:38:02 |
|
||
|
Deadlock'и в MsSQL 7
|
|||
|---|---|---|---|
|
#18+
>Если ошибка не так страшна, используй with (nolock) в >селекте, правда данные будут получаться чуть >грязноватые. Я думаю, что в такой системе количество откатов приблизительно равно нулю, поэтому with (nolock) - хороший, если не лучший выбор, который не требует анализа и переделки остального кода с целью минимизации длительности блокировок. Но по хорошему нужно сделать то, что советует GreenSunrise. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 11:06:25 |
|
||
|
|

start [/forum/moderation_log.php?user_name=%D0%B0%D0%BD%D1%8F]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 677ms |
| total: | 847ms |

| 0 / 0 |
