Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
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, 16:52 |
|
||
|
ASE 12.5 - тупой HOLDLOCK (или я) ?
|
|||
|---|---|---|---|
|
#18+
Обсуждали уже. select * from test holdlock означает, что таблице test в запросе присваивается алиас holdlock. Читайте документацию, как правильно указывать уровень изоляции в запросах. К примеру в ASA нужно после имени таблицы указывать оператор WITH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 19:08 |
|
||
|
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, 20:38 |
|
||
|
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, 21:12 |
|
||
|
ASE 12.5 - тупой HOLDLOCK (или я) ?
|
|||
|---|---|---|---|
|
#18+
Тут уже Жора все правильно написал, я только хочу уточнить ... ska Попытка update в любой транзакции приводит к lock ! На хрена такой holdlock ? Или у них какие-нибудь патчи есть ? HOLDLOCK держит Shared Lock до конца транзакции. Это позволяет другим читать запись, но не изменять ее. updlock-а как в MSSQL в Sybase ASE нет. Если нужно , можно его съимитировать с помощью ложного UPDATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 22:21 |
|
||
|
ASE 12.5 - тупой HOLDLOCK (или я) ?
|
|||
|---|---|---|---|
|
#18+
Забыл кстати отметить что @@err=1205 невозможно проверить в ХП, только на клиенте, а старые версии ODBC не возвращали эту "ошибку" в клиент, так что полная ж..., труба извиняюсь была (есть ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 22:37 |
|
||
|
ASE 12.5 - тупой HOLDLOCK (или я) ?
|
|||
|---|---|---|---|
|
#18+
Какая то странная, эта ASE. Вот в ASA пишешь Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 00:27 |
|
||
|
|

start [/forum/topic.php?fid=55&gotonew=1&tid=2013143]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 385ms |

| 0 / 0 |
