Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Апологетам "MS SQL Server" - что там с блокировками записей? [D6]


Страницы:   1 2

Курдль ©   (2004-04-30 13:21:00) 

Как с ними бороться. Я имею в виду отказ сервера в выборе записей, когда кто-то открыл транзакцию на изменение.


Курдль   (2004-04-30 22:15:00) [1]


> Для такого ответа необходим скромный (и только!) опыт работы
> с Oracle и никакой с MSSQL.

Совершенно в точку! :(
А MSSQL вообще прозвучал в топике, для привлечения внимания (т.к. он младший брат Sybase - тоже, млин, "блокировщик").
Однако, мой скромный опыт работы с ораклом не принес ни одного разочарования. Ну, если не считать легкой SQL-ной недостаточности в 8-м и тяжелой - в 7-м. :)


Fay   (2004-04-30 18:49:00) [2]

Это будет не сегодня. День не подходящий 8)


Nikolay M.   (2004-04-30 18:25:00) [3]


> Проверка временем не прошла.

Why?


> Проверю на 3-м - любопытно стало. 8)

Жду-с :)


Fay   (2004-04-30 18:13:00) [4]

У меня 4-ы ещё не установлен.Проверка временем не прошла.
Проверю на 3-м - любопытно стало. 8)


Nikolay M.   (2004-04-30 18:11:00) [5]


> С тех пор выходили всякие servicefuck-и

Так может в них уже проблема решена? Я, признаться, без SP4 на 2000-м даже и не работал...


Fay   (2004-04-30 17:57:00) [6]

Когда я сам на такое нарвался, бяда проявлялась в том, что оставались открытые транзакции. С тех пор выходили всякие servicefuck-и, но я по сию пору пишу с циклом. 8)


Nikolay M.   (2004-04-30 17:38:00) [7]

Сейчас времени на эксперименты нет, но потом обязательно исследую этот вопрос. Хочешь сказать, что пкоа сервер освобождает ресурсы, схаванные транзакцией, он не выставит правильное значение @@trancount?


Fay   (2004-04-30 17:30:00) [8]

В таких ситуациях второй print может выдать нечто большее нуля.
print @@trancount
begin tran tran1
...
rollbact tran tran1
print @@trancount


Nikolay M.   (2004-04-30 17:22:00) [9]


> не всегда очевидно, какой @@trancount

Можно пример, если не трудно?
Впервые слышу, что после ролбэка может быть @@trancount <> 0.


Fay   (2004-04-30 17:16:00) [10]

Nikolay M. ©   (30.04.04 16:51) [26]
>> Но в цикле - ? Смысл?
В MSSQL есть такая фигня в процедурах - не всегда очевидно, какой @@trancount. Обычное дело при явном старте транзакции в процедуре.


Nikolay M.   (2004-04-30 16:51:00) [11]


> jocko ©   (30.04.04 14:34) [18]
> вовремя отслеживать
> и делать например, while @@trancount > 0 rollback tran

Роллбэк из внутренней транзакции октатит все внешние транзакции тоже. Просто перед коммитом или роллбэком нужно проверять значение @@trancount. Но в цикле - ? Смысл?


Fay   (2004-04-30 16:46:00) [12]

2Курдль ©   (30.04.04 14:26) [15]
Для такого ответа необходим скромный (и только!) опыт работы с Oracle и никакой с MSSQL.


Fay   (2004-04-30 16:43:00) [13]

2Polevi ©   (30.04.04 15:17) [23]
В таких ответах принято ставить смайлики.


Polevi   (2004-04-30 15:17:00) [14]

да макрософт вообще ацтой, виндовс масдай
даешь оркл на линуксе !


dimm22   (2004-04-30 14:59:00) [15]

Сразу чувствуется, что пятница. Народ пофлеймить потянуло. Даёшь версионность всем БД !!!(Читать как Ibase, Oracle - cool; MSSQL- shit.)


Курдль   (2004-04-30 14:52:00) [16]


> Если блокировки мешают работе, то это уже зависит от программиста,
> который коряво пишет программы.

Если программист пишет программы с базами на "парадоксе", которые (как неоднократно здесь упомяналось) имеют свойство рушить собственные индексы, то это я называю "коряво писать программы". Т.е. как бы ни был хорош программист - рано или поздно юзер останется без данных.


bushmen   (2004-04-30 14:47:00) [17]

>Только нет таких, которые мешают работать с базой :(

Если блокировки мешают работе, то это уже зависит от программиста, который коряво пишет программы.


roottim   (2004-04-30 14:36:00) [18]

>Если не считать, что он начинает дико жрать ресурсы.
это какие???... и при каких условиях ?
и всеже почитай тома.. со вкусом написано... и на понятном каждому уровне, думаю многие вопросы отпадут сами сабой...


jocko   (2004-04-30 14:34:00) [19]

>Как с ними бороться.
1. не открывать транзакции с клиента (есть такие любители)
2. сузить транзакции, т.е. не вычислять переменные внутри транзакций, не делать селектов внутри тран. (иначе на время выполнения тран. записи блокируются, и надо помнить еще про эскалации)
3. разбивать длинные транзакции (по возможности)
4. следить за тем, чтобы небыло прерываний timeout при вызове с клиента (это вообще полная ж...), или вовремя отслеживать и делать например, while @@trancount > 0 rollback tran, иначе эта гадость будет вообще висеть непонятное количество времени :-(


Ega23   (2004-04-30 14:30:00) [20]

Предположим, что в момент t1 сделал INSERT а в момент t2 сделал ROLLBACK, но именно между этим, возможно даже очень малым промежутком времени, ЮЗЕР2 и сделал своё черное дело - получил ID записи из ТАБЛИЦЫ1 для своего зловещего внешнего ключа.

Может я конечно чего-то недопонимаю, но разве в один момент времени могут обрабатываться сервером 2 разные транзакции?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо