Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.01.2006, 16:52
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
Привет, Я с Sybase дел не имел. Теперь пришлось :-(( Понадобился эквивалент Ораклового select for update или MSSQL updlock. Поискал, увидел holdlock, проверяю: #1 start transaction select * from test holdlock -- получаю запись #2 start transaction select * from test holdlock -- получаю запись. ???????????????????????????? Попытка update в любой транзакции приводит к lock ! На хрена такой holdlock ? Или у них какие-нибудь патчи есть ? Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2006, 19:08
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
Обсуждали уже. select * from test holdlock означает, что таблице test в запросе присваивается алиас holdlock. Читайте документацию, как правильно указывать уровень изоляции в запросах. К примеру в ASA нужно после имени таблицы указывать оператор WITH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2006, 20:38
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
ASCRUSОбсуждали уже. select * from test holdlock означает, что таблице test в запросе присваивается алиас holdlock. Читайте документацию, как правильно указывать уровень изоляции в запросах. К примеру в ASA нужно после имени таблицы указывать оператор WITH. Неверно Вы сказали, Уважаемый. holdlock ASE понимает, только вот делает что-то недоношенное. session 1: 1> begin transaction 2> select * from test holdlock 3> go k v ------------------------------------------ -------------------- 0x3161316131613161000000000000000000000000 1111 (1 row affected) session 2: 1> begin transaction 2> select * from test holdlock 3> go k v ------------------------------------------ -------------------- 0x3161316131613161000000000000000000000000 1111 (1 row affected) ПРОДОЛЖЕНИЕ: session 1: 1> update test set v = '222' 2> go ВИСИМ !!!!!! session 2: 1> update test set v = '222' 2> go Msg 1205, Level 13, State 1: Server 'SUN60', Line 1: Your server command (family id #0, process id #30) encountered a deadlock situation. Please re-run your command. session 1: ПРОСНУЛИСЬ (1 row affected) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2006, 21:12
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
skaПривет, Я с Sybase дел не имел. Теперь пришлось :-(( Понадобился эквивалент Ораклового select for update или MSSQL updlock. Поискал, увидел holdlock, проверяю: #1 start transaction select * from test holdlock -- получаю запись #2 start transaction select * from test holdlock -- получаю запись. ???????????????????????????? Попытка update в любой транзакции приводит к lock ! На хрена такой holdlock ? Или у них какие-нибудь патчи есть ? Сергей 1. К сожалению Sybase ASE не поддерживает опеpатора select for update (в чистом SQL, только c курсорами), хотя можно попробовать select for browse (хотя предназначен для работы только c library, но вроде не только), a проще надо делать pучками updlock самому делая update сначала, a затем select (например как описано в ASE TS Guide (err.1205), хотя в последних версиях вроде можно прямо в update и @key выхватить новый, у мен err. дает) 2. Holdlock ведет себя как описано держа shared lock до конца транзакции. (To ASCRUS:Никакой syntax ошибки тут нет), но позволяя другой select. 3. Попытка update (в обоих транзакциях) приведет k deadlock, разрешаемый ASE и надо проверить @@error=1205, и снова пытаться повторить victim-transaction. 4. Этот довольно неуклюжий (select ... holdlock, update -> "artificial" deadlock) механизм борьбы с фантомами описан в книге Дэйта по DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2006, 22:21
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
Тут уже Жора все правильно написал, я только хочу уточнить ... ska Попытка update в любой транзакции приводит к lock ! На хрена такой holdlock ? Или у них какие-нибудь патчи есть ? HOLDLOCK держит Shared Lock до конца транзакции. Это позволяет другим читать запись, но не изменять ее. updlock-а как в MSSQL в Sybase ASE нет. Если нужно , можно его съимитировать с помощью ложного UPDATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2006, 22:37
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
Забыл кстати отметить что @@err=1205 невозможно проверить в ХП, только на клиенте, а старые версии ODBC не возвращали эту "ошибку" в клиент, так что полная ж..., труба извиняюсь была (есть ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2006, 00:27
|
|||
|---|---|---|---|
ASE 12.5 - тупой HOLDLOCK (или я) ? |
|||
|
#18+
Какая то странная, эта ASE. Вот в ASA пишешь Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&tablet=1&tid=2013143]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 347ms |

| 0 / 0 |
