|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
invm, Я там пытаюсь ваш код обсуждаю который вы прокоментировали 2 раза и как мне показалось эти разы протворечивы. Если делать как было паказано в 22056821 - в очередь встанут только добавлятели, ну и некоторые писатели, если будут модифицировать/удалять строку с максимальным NUM А в том посте 220... Код был такой Код: sql 1.
Из этого я понял, что читателям дана полная свобода. А это плохо. Но за тем вы пишите, что ваша строчка все же работает иначе: После выполнения этого запроса и до завершения транзакции, в других транзакциях невозможно будет прочитать, изменить, добавить или удалить ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 20:48 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
Сиквансы и идентити я выше говорил, что это не подходит. Я велосипед нагородил чтобы понять как работают транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 20:51 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
хм... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 20:55 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 Из этого я понял, что читателям дана полная свобода. А это плохо. В 22057563 написано максимально подробно каким именно читателям полная свобода, а каким нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 22:04 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 andron81, хотя вот оно определение монопольной блокировки: монопольная (exclusive) - означает, что только одна сессия может установить эту блокировку в один момент времени. ни о каких пользователях речи нет. А тут мы говорим о сессиях. andron81 invm, неа. мне показалось, что выше Вы писали иначе о том что будет происходить, если так расставить изоляцию Если указать tablockx, то будет заблокирована вся таблица дшля всех действий, кроме действий блокирующей сесии А если, как написал invm, указать (updlock, serializable), то будет заблокировано только получение нового ID, а вот чтение, изменение, и даже добавление предыдущих записей будет разрешено. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 22:20 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
alexeyvg А если, как написал invm, указать (updlock, serializable), то будет заблокировано только получение нового ID, а вот чтение, изменение, и даже добавление предыдущих записей будет разрешено. Да, вот это NUM >= @NUM, я профанарил. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 22:28 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
invm andron81, Не вижу разницы. "Добавлятель" - это ваш код и стартового поста. спасибо . в теории всё вроде бы понял. но стал экспериментировать и наткнулся на непонимание , что происходит. запустил 2 скрипта последовательно - скрипт1 и скрипт2. Скрипт1 с задержкой, Скрипт2 без. Оба пока без инсертов , первый как полагается отработал через 30 секунд. а второй крутится и крутится и крутится. скрипты прилагаю. Скрипт1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Скрипт2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 09:08 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 запустил 2 скрипта последовательно - скрипт1 и скрипт2. Скрипт1 с задержкой, Скрипт2 без. Оба пока без инсертов , первый как полагается отработал через 30 секунд. а второй крутится и крутится и крутится. скрипты прилагаю. Лучше и скрипт создания таблицы тоже приложите, включая все её объекты (индексы, констрейны и т.д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 09:20 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
alexeyvg andron81 запустил 2 скрипта последовательно - скрипт1 и скрипт2. Скрипт1 с задержкой, Скрипт2 без. Оба пока без инсертов , первый как полагается отработал через 30 секунд. а второй крутится и крутится и крутится. скрипты прилагаю. Лучше и скрипт создания таблицы тоже приложите, включая все её объекты (индексы, констрейны и т.д.) спасибо за участие. ну там таблица которую создал без всяких отсебяшных индексов. с одним только полем NUM которое я сделал первичным ключом. вот ещё могу что показать: картинка ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 09:23 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
да . сейчас попробовал на другой базе. всё работает - странно , а что это было ? а можно что-нибудь сказать по той картинке где результат выполнения sp_who2, sp_lock на тот висящий момент ? alexeyvg Лучше и скрипт создания таблицы тоже приложите, включая все её объекты (индексы, констрейны и т.д.) вот такой скрипт Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 09:39 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81, Так не будет работать, не увеличиваете NUM, одно и то же вставляете, при добавлении в таблицу свалится на PRIMARY KEY Код: sql 1.
нужно Код: sql 1.
select top (1) @NEW_NUM = NUM from SPK_TEST13 with (updlock, serializable) order by NUM desc; ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 09:55 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 да . сейчас попробовал на другой базе. всё работает - странно , а что это было ? andron81 а можно что-нибудь сказать по той картинке где результат выполнения sp_who2, sp_lock на тот висящий момент ? В данном случае блокирующий SPID = 57, ищите это окошко. Можете в нём выполнить select @@trancount, он будет больше 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 10:00 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
entrypoint Так не будет работать, не увеличиваете NUM, одно и то же вставляете, при добавлении в таблицу свалится на PRIMARY KEY ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 10:00 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
alexeyvg andron81 а можно что-нибудь сказать по той картинке где результат выполнения sp_who2, sp_lock на тот висящий момент ? В данном случае блокирующий SPID = 57, ищите это окошко. Можете в нём выполнить select @@trancount, он будет больше 0. [/quot] справоцировать по новой это не удалось. странно всё это . вы пишите , что что-то блокирующее в сеансе с номером 57. Но из картинки видно, что сеанс всё закончил и простаивает ("Awaiting command"). Вы хотите сказать , что транзакция до сих пор активна в этом сеансе ? а почему ? там ведь кроме моих сеансов и сеансов BuhServer/Администратор (причем не думаю , что ковыряния в базе msdb затрагивает нашу транзакцию из 57) ничего ведь нет . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 12:17 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 Но из картинки видно, что сеанс всё закончил и простаивает ("Awaiting command"). 1. Открываем новое окошко SSMS 2. Выполняем команду begin tran 3. Смотрим состояние сессии ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 12:19 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
msLex andron81 Но из картинки видно, что сеанс всё закончил и простаивает ("Awaiting command"). 1. Открываем новое окошко SSMS 2. Выполняем команду begin tran 3. Смотрим состояние сессии это ведь и было сделано и снимок sp_who2 есть. вот тут об этом я писал. 22057670 там и картинка с sp_who2 . вот и загадка в картинке : процесс 62 подвис из-за процесса 57. а 57 все как бы закончил (sleeping, Awaiting command). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 12:57 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 а 57 все как бы закончил (Awaiting command). В вашем 57, на начало выполнения скрипта, уже была открытая транзакция. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 13:02 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
invm В вашем 57, на начало выполнения скрипта, уже была открытая транзакция. вы хотите сказать ,что хоть я и запускал процесс 57 раньше 62, но в скрипте 62-го транзакция сработала раньше 57-го ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 13:17 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 вы хотите сказать ,что хоть я и запускал процесс 57 раньше 62, но в скрипте 62-го транзакция сработала раньше 57-го ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 13:27 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
invm andron81 вы хотите сказать ,что хоть я и запускал процесс 57 раньше 62, но в скрипте 62-го транзакция сработала раньше 57-го ? не понял. Получается в 57 транзакция не отработала ? Во всяком случае я в 57 в окно заходил скрипт отработал и выдал. можно предположить какая это транзакция (моя или чья-то ещё)? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 13:33 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81, единственное что я делал до этого это создавал таблицу SPK_TEST13 с одним полем(первичный ключ) по средствам менеджмент студио ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 13:44 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 Получается в 57 транзакция не отработала ? Получается, что в 57 просто есть незавершенная транзакция. Причин из-за чего может быть несколько. Например, прервали выполнение. Или выполнили только часть скрипта, без коммита. Или выполнение было прервано по ошибке. И т.п. Что бы снизить вероятность этого, рекомендуется включать опцию xact_abort. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 13:45 |
|
вставка уникального значения.
|
|||
---|---|---|---|
#18+
andron81 странно всё это . вы пишите , что что-то блокирующее в сеансе с номером 57. Но из картинки видно, что сеанс всё закончил и простаивает ("Awaiting command"). Вы хотите сказать , что транзакция до сих пор активна в этом сеансе ? а почему ? Она выполнилась, и всё, сервер ждёт от вас следующих команд в этой сессии. А вы ушли обедать, ничего не делаете, окно не закрыли. Вот и будет открытая транзакция, заблокированные ресурсы, и статус Awaiting command. Пока вы не закроете коннект (окно в SSMS), либо не выполните COMMIT TRAN, либо пока кто то не кильнёт вашу сессию. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 14:26 |
|
|
start [/forum/topic.php?fid=46&startmsg=39913029&tid=1686660]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 371ms |
total: | 622ms |
0 / 0 |