powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Строчные блокировки
15 сообщений из 15, страница 1 из 1
Строчные блокировки
    #36913337
_devel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASE 15

Может конечно глупость спрашиваю, но...

Есть таблица с построчной блокировкой, делаем update на уровне изоляции 1, который работает 4сек. В момент update-а смотрим monLock и видим много построчных блокировок.
Вопрос: Почему ASE держит построчные блокировки до конца транзакции, уровень изоляции же 1???
...
Рейтинг: 0 / 0
Строчные блокировки
    #36914286
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 21.10.2010 21:19, _devel wrote:

> Есть таблица с построчной блокировкой, делаем update на уровне изоляции 1,
> который работает 4сек. В момент update-а смотрим monLock и видим много
> построчных блокировок.

> Вопрос: Почему ASE держит построчные блокировки до конца транзакции, уровень
> изоляции же 1???

Для обеспечения целостности данных он держит.

UPDATE работает вообще-то на уровне изоляции 0, и обязан
держать эксклюзивную WRITE-блокировку до конца транзакции.
Так все СУБД поступают, если они ACID поддерживают.

Если этого не делать, автоматом получится несериализуемая
транзакция.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Строчные блокировки
    #36915692
Фотография Zhora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_devel,

By definition of level 1
...
Рейтинг: 0 / 0
Строчные блокировки
    #36915868
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 23.10.2010 7:58, Zhora wrote:
> _devel,
>
> By definition of level 1

Только не 1, а 0.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Строчные блокировки
    #37119560
bamka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня еще один вопрос такого же плана,
ASE 15.0.3 , уровень изоляции 1, построчная блокировка.

Один запрос делает select, сканируя индекс на таблице, накладывает shared блокировки на строки, а потом, насколько я понимаю срабатывает ескалация и я вижу sh_table.

Второй такой - же запрос тоже сканирует этот же индекс и тоже пытается наложить sh_table, но у первого запроса появляется Sh_table-blk. Второй select блокируется первым.

Выходит нельзя одновременно накладывать 2-е и более Sh_table блокировки ?
Ткните в доку, пожалуйста, а то не могу найти.
...
Рейтинг: 0 / 0
Строчные блокировки
    #37119920
bamka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или по-другому, откуда берутся Sh_table-blk блокировки ?
Насколько я понимаю, они выставляются, когда shared блокировка таблицы конфликтует с блокировкой, которую другой процесс хочет наложить на эту таблицу.
Но как два select-а могут конфликтовать ???
...
Рейтинг: 0 / 0
Строчные блокировки
    #37120981
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bamka,

Два select-а не могут конфликтовать!!!!

Покажите запросы и DDL таблицы.
...
Рейтинг: 0 / 0
Строчные блокировки
    #37121113
bamka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cherrex_Den,

По-моему я понял в чем дело, осталось протестировать.
На сервере работает много отчетов, все они readonly.
Но есть еще репликация (это standby), которая в момент "общего капута" тоже была заблокирована первым отчетом.
Получается что сами по себе отчеты друг друга не блокируют, но после того как первый отчет заблокировал реплику(и это естественно, так как отчет держал Sh_tablel lock), его Sh_tablel lock превратился в Sh_tablel-blk.
И вот теперь он блокирует не только реплику, но идругие readonly отчеты, так как они хотят наложить Sh_tablel lock а там уже Sh_tablel-blk.
Сбивало с толку то, что в процессах показывает readonly отчеты, заблокированы readonly отчетом.
...
Рейтинг: 0 / 0
Строчные блокировки
    #37121321
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 16.02.2011 12:59, bamka wrote:

> Один запрос делает select, сканируя индекс на таблице, накладывает shared
> блокировки на строки, а потом, насколько я понимаю срабатывает ескалация и я
> вижу sh_table.

Вообще эскалация Shared-ов -- это что-то странное. Sh-локи снимаются тут же
после чтения. Что их эскалировать ? Есть правда режим принудительного
оставления Shared-ов, тогда разве что. Но его редко кто использует.

> Второй такой - же запрос тоже сканирует этот же индекс и тоже пытается наложить
> sh_table, но у первого запроса появляется Sh_table-blk. Второй select
> блокируется первым.

Не бывает такого. Ты что-то путаешь или неправильно интерпретируешь.

> Выходит нельзя одновременно накладывать 2-е и более Sh_table блокировки ?

Да я сам тебе скажу. Sh - lock-и друг с другом совместимы. Не совместимы
они с Upd и Ex.

Найди в доке таблицу совместимости блокировок. Можно в русской так и искать прямо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Строчные блокировки
    #37121325
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 16.02.2011 14:29, bamka wrote:

> Или по-другому, откуда берутся Sh_table-blk блокировки ?
> Насколько я понимаю, они выставляются, когда shared блокировка таблицы
> конфликтует с блокировкой, которую другой процесс хочет наложить на эту таблицу.

Значить для начала блокировки Sh_table-blk не существует.
Есть Sh_(row-page-table) и признак того, что блокировка
кому-то мешает. При установленном этом признаке ASE добавляет
суффикс "blk".

Sh_(row-page-table)-blk -- это любая Sh-блокировка, которая мешает
получить кому-то другие блокировки на этот же ресурс.
Это могут быть

Upd-(row-page-table)
или
Ex-(row-page-table)

Ещё есть
Upd-Intent, ей тоже может мешать Sh-блокировка, но только
некоторое время. Потом Upd-Intent преобразуется в Upd-Demand
и "побеждает" Sh.

> Но как два select-а могут конфликтовать ???

В смысле, два Shared-а ? Никак не могут.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Строчные блокировки
    #37121326
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 16.02.2011 21:00, bamka wrote:

> По-моему я понял в чем дело, осталось протестировать.

Вряд ли. Не получается стройной картинки у тебя.
Read-only запросы не могут себя блокировать никогда.
Они могут блокировать только модифицирующие запросы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Строчные блокировки
    #37121900
bamka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Может быть я что-то и упускаю ...
Попробую еще раз.
- Запускается отчет, соединяет таблицы с помощью MERGE JOIN, таблицы большие, поэтому срабатывает эскалация и Sh_table
удерживается пока все данные запишутся в worktable merge join-а. (Или тут эскалация не должна срабатывать, а Sh_row должны
сниматься по мере копирования данных в worktable ?)
- Появляется реплика и хочет установить конфликтирующую Ex блокировку. Ждет.
- Запускаются еще несколько отчетов, которые тоже хотят наложить на Sh_table. 2 из них реплика пропускает, а после третьего,
лезущего вне очереди, устанавливает Ex_(table/row)-demand-blk (blk потому что есть еще несколько отчетов в очереди на
Sh_(table/row) после реплики. ).
Хотя в этом случае остальные отчеты (после 3-го в очереди) должны быть заблокированы репликой, а не первым отчетом ....
sp_who показывает что все процессы заблокированы именно первым отчетом.
...
Рейтинг: 0 / 0
Строчные блокировки
    #37122671
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 17.02.2011 11:45, bamka wrote:

> - Запускается отчет, соединяет таблицы с помощью MERGE JOIN, таблицы большие,
> поэтому срабатывает эскалация и Sh_table
> удерживается пока все данные запишутся в worktable merge join-а.

Вот не должна вроде бы эскалация срабатывать. Я же говорю, Shlock
снимается сразу же после чтения строки/страницы, зачем ему эскалироваться?
Эскалация происходит когда кол-во локов увеличивается.

Возможно, конечно, merge join их держит дольше, я не очень в курсе.

(Или тут
> эскалация не должна срабатывать, а Sh_row должны
> сниматься по мере копирования данных в worktable ?)

Должна по идее сниматься после чтения каждой строки/страницы.
Чтение вообще обысно идёт так: накладывается Sh на строку/страницу,
читается строка/страница, накладывается Sh на следующую строку/страницу,
снимается Sh с предыдущей строки/страницы, читаются данные, и т.д.


> - Появляется реплика и хочет установить конфликтирующую Ex блокировку. Ждет.

С чего это она хочет ? Что она делает ? INSERT-ы ? UPDATE-ы ? DELETE_ы ?

> - Запускаются еще несколько отчетов, которые тоже хотят наложить на Sh_table. 2
> из них реплика пропускает, а после третьего,
> лезущего вне очереди, устанавливает Ex_(table/row)-demand-blk (blk потому что
> есть еще несколько отчетов в очереди на
> Sh_(table/row) после реплики. ).

ОК, где же там читатели, блокирующие читателей ?

> Хотя в этом случае остальные отчеты (после 3-го в очереди) должны быть
> заблокированы репликой, а не первым отчетом ....
> sp_who показывает что все процессы заблокированы именно первым отчетом.

Это можнет быть просто особенностью показа.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Строчные блокировки
    #37137676
ssvadbaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, нашёл то, что нужно
...
Рейтинг: 0 / 0
Строчные блокировки
    #37141613
bamka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Спасибо за помощь,
так и есть - то просто особенность отображения блокировок (как в Sybase Central так и в sp_who).
Читающих блокировала реплика, которая ожидала возможности поставить эксклюзивную блокировку, а Central и sp_who показывали что блокирует select (а он держал Sh_table lock).
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Строчные блокировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]