Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
Долго я маялся со своими процедурами и триггерами непонимая в чём дело пока не обнаружил, что работает всё далеко не так как я себе представлял. чтобы долго не обясянять просто приведу пример как есть, а как хотелось бы. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 2-вый процесс (запускает транзакцию после того как проделано вставку первой транзакции (процесса)) Код: plaintext 1. 2. 1-вый процесс delete LockTest where pk = 1 --висит (ждёт коммита второй транзакции) --илиже rollback --тоже висит (ждёт коммита второй транзакции) можно также удачно сделать коммит первой транзакции но удалить запись посде этого также нельзя будет пока не будет коммита воторй Читал я в докумментации я про эти блокировки там это дело как-то с индексами связано, вроде как хорошо если они есть... но и уменя он есть на PK. Отчасти моё непонимание связано с неидеальным пониманием английского языка на котором у меня документация. Толи написано размыто и не доконца... вообщем немогу охватить я это дело своим пониманием. Конечно-же я не прошу чтобы меня тут кто-то стал учить, почитаю ещё несколько раз может больше пойму, но если можно то коротко напишите ктото почему в данном случае всё происходит так, и второе - что можно попробовать сделать чтобы такого небыло. Я так понимаю заставить аса для некоторий таблицы использовать построчную блокировку нельзя а только можно создать предусловия для чтобы получалась такая схема блокировки, поскольку АСА старается, как где-то написано, вибрать самый слабый тип блокировки (тоесть по возможности на строку а не таблицу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 11:07 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
yourij_mw wrote: > Я так понимаю заставить аса для некоторий таблицы использовать > построчную блокировку нельзя В ASA нет других видов блокировки, кроме позаписной (LOCK TABLE - отдельная история). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 11:12 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
Dim2000 В ASA нет других видов блокировки, кроме позаписной (LOCK TABLE - отдельная история). но зато он может судя по всему легко может наложить по одну блокировку на каждую строчку таблицы :-)... Ну всётаки это у меня праильно всё происходит в примере. Я как вчера начал читать про всякие там антиинсертные, фантомные и ещё какието там блокировки у меня голова разболелась, планирую почитать ещё сегодня только не перед едой, ато опять апетит испортится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 11:27 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
А план запроса что говорит при DELETE? используется доступ по индексу или же table-scan? Какие блокировки висят при выполнении DELETE? В качестве предположения - тут еще может быть засада с тем, что поля в табличке numeric(9,0) а доступ идет по int константе... Попробуй объявить переменную numeric(9,0), и с 1 в ней выполнить DELETE, возможно тогда он начнет ходить по индексу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:04 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
лень wrote: > В качестве предположения - тут еще может быть засада с тем, что поля в > табличке numeric(9,0) а доступ идет по int константе... Не вижу разницы. А вообще, если бы я понимал _всё_ в блокировках, возникающих при выполнении различных SQL-операторов, я бы это считал своим самым большим know-how и продавал только за большие бабки . Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:16 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
засада с не тем типом и просмотры планов мне известны по АСЕ. Даже топик есть гдето там старый мною начатый , попробую я и тут посмотреть.. просто переживаю, что разница есть в этих субд потому и забыл.. слабое подозрение на то что может в таблице слишком мало записей, может если бы их было побошльше и строки находились бы в разных частях таблицы то такого. Кроме того Вы можете тожесамое проделать у себя за 1 минуту. достаточно двух окон dbisql и скрипта на создание и вставку по таблицам которые описаны выше. Судя по Вашим вопросами я догадываюсь что Вы согласны с тем что ситуация ненормальная если пока неговроить про причины... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:33 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
Dim2000 лень wrote: > В качестве предположения - тут еще может быть засада с тем, что поля в > табличке numeric(9,0) а доступ идет по int константе... Не вижу разницы. разница в плане выполнения... если оптимизатор считает, что типы в SARG не совпадают, то об index seek можно забыть, будет типичный table-scan... В ASE с этим уже неоднократно встречался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:02 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
yourij_mwзасада с не тем типом и просмотры планов мне известны по АСЕ. Даже топик есть гдето там старый мною начатый , попробую я и тут посмотреть.. просто переживаю, что разница есть в этих субд потому и забыл.. слабое подозрение на то что может в таблице слишком мало записей, может если бы их было побошльше и строки находились бы в разных частях таблицы то такого. Кроме того Вы можете тожесамое проделать у себя за 1 минуту. достаточно двух окон dbisql и скрипта на создание и вставку по таблицам которые описаны выше. Судя по Вашим вопросами я догадываюсь что Вы согласны с тем что ситуация ненормальная если пока неговроить про причины... Ситуация ненормальная... Ибо только что прогнал сей тест на АСЕ (нету у меня АСА, поэтому предыдущее писал из общих соображений), все замечательно работает и удаляется. Посему остается только одно - смотреть план запроса и блокировки... Без этого все идеи только идеи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:08 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
лень wrote: > разница в плане выполнения... если оптимизатор считает, что типы в SARG > не совпадают, то об index seek можно забыть, будет типичный > table-scan... В ASE с этим уже неоднократно встречался... Мы вообще-то ASA обсуждаем ;). Маленький примерчик: select * from dba.participant where part_id = '1000' ; Part_id - первичный ключ типа Numeric(8). Тем не менее запрос выполняется, естессно, именно по PK: Index Scan Scan participant using index participant А оптимизатор в ASE порой туп до дебильности, и приводить его в пример не нужно. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:11 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
Dim2000 Мы вообще-то ASA обсуждаем ;). Маленький примерчик: select * from dba.participant where part_id = '1000' ; Part_id - первичный ключ типа Numeric(8). Тем не менее запрос выполняется, естессно, именно по PK: Index Scan Scan participant using index participant Разница в АСА между Index Scan и Index Seek существует? :) А что за план будет если не строка, а число? Мне просто интересно, действительно ли нет в этом разницы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:51 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
лень wrote: > Разница в АСА между Index Scan и Index Seek существует? :) Похоже, нет. > А что за план будет если не строка, а число? Точно такой же (специально сейчас проверил): выборка по первичному ключу. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 16:35 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
Я тоже проделывал несколько часов тому на АСЕ и всё работает нормалёк. А на АСА таки "выяснил"(покрайней мере так думаю, експриментировал..) брал уже нормальную таблицу. Такое происходило только в тех случаях когда удалялись строчки наохдящиеся в непосредственной близости (конечно же и это гарантировать не могу т.к. и спешил к тому же успокоить публику да у немного другим был занят. ). Кроме того "заблокированную" (которую нельзя удалить) строчку можно редактировать, просто удалять нельзя. Если быть более менее уверенным в том что я сам только что написал можно было бы думать как это обойти.. но нет веры.. Ябы не поднимал конечно-же этот вопрос если бы убедилься в этом раньше. Теперь просто оказывается, что нельзя быть уверенным в том что запись взятая с помощю readpast действительно незаблокированная, со всеми последствиями относящимися к некоторому числу процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 17:48 |
|
||
|
АСА 9,02,3361 Неполучается создать предусловия для построчной блокировки
|
|||
|---|---|---|---|
|
#18+
Непривычным, я бы сказал, есть поведение АСА когда ложатся разделяемые блокировки на главную запись, в то время когда не то-что вставляется/редактируется, а даже только удаляется подчинённая ей запись из другой таблицы. Приходится надеятся что чем-то оправданы такие предосторожности или "побочные ефекты" чего-то другого, но очень хрошего :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 14:42 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34183468&tid=2012372]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 294ms |

| 0 / 0 |
