|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Привет, что-то не могу найти решение. Есть таблица, из неё могут читать одновременно несколько транзакций. Допустим во всех транзакциях выполняется Код: sql 1.
Так вот надо чтобы каждая транзакция пропускала те строки, которые в данный момент попали в выборку других транзакций (которые ещё не закоммичены). То есть если одна транзакция выбрала свой top(10) записей то она их блокирует таким образом что другие транзакции их пропускают, выбирая свой top(10). Такое возможно вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 22:13 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
rigor mortis, WITH (READPAST) Только с изоляцией снапшотов будут проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 23:38 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
rigor mortis, делайте апдейт, а потом уже селект. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2019, 04:46 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
rigor mortis, Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2019, 10:02 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
invm, а где holdlock, begin tran, commit? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 02:37 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Gerros а где holdlock, begin tran, commit? А где begin tran и commit - спрашивайте у ТС ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 11:37 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Gerros, да, я тоже к этому пришёл, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 22:09 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Mind rigor mortis, WITH (READPAST) Только с изоляцией снапшотов будут проблемы. поясните пожалуйста что за снапшоты? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 22:10 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
rigor mortis Mind rigor mortis, WITH (READPAST) Только с изоляцией снапшотов будут проблемы. поясните пожалуйста что за снапшоты? уровень изоляции моментальных снимков. READPAST работает только на уровнях READ COMMITTED и REPEATABLE READ. подробнее можете прочитать в справке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 22:35 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
rigor mortis да, я тоже к этому пришёл, спасибо. Да и про update в условиях ни слова. И как потом прочитать ровно то, что было проапдейчено тоже не важно. Вообще, при таком раскладе, делают примерно так: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 23:11 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
invm Вообще, при таком раскладе, делают примерно так: Код: sql 1. 2. 3. 4.
по-моему, так надёжней: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 02:03 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Gerros invm Вообще, при таком раскладе, делают примерно так: Код: sql 1. 2. 3. 4.
по-моему, так надёжней: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
а где в вашем примере выполнение требования которое хотел ТС? у вас сформируется очередь из писателей приэтом блокировки будут неизбежны. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 04:34 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Gerros не уверен, не может случиться что два потока одну и ту же запись обновят по очереди? Есть репро? Или, хотя бы, сможете объяснить как такое возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 12:05 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
С обновлением по очереди всё нормально. После обновления в строке устанавливается поле read=true, а обновлять транзакция может только если read=false. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 12:11 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
rigor mortis С обновлением по очереди всё нормально. После обновления в строке устанавливается поле read=true, а обновлять транзакция может только если read=false. Судя по всему - нет. Иначе давно бы уже потратили пару минут своего драгоценного времени на чтение документации по readpast. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 13:02 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Gerros invm Вообще, при таком раскладе, делают примерно так: Код: sql 1. 2. 3. 4.
по-моему, так надёжней: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 23:23 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Mind Gerros пропущено... не уверен, не может случиться что два потока одну и ту же запись обновят по очереди? по-моему, так надёжней: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Бреtt ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2019, 10:58 |
|
Блокировка записей на чтение.
|
|||
---|---|---|---|
#18+
Gerros, where thread = null наверно какие-то специальные настройки нужны, чтобы это работало order by ... а здесь и настройки не помогут, если это T-SQL - нет такого синтаксиса для контструкции Update авторпо-моему, так надёжней: просто очень надежно ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2019, 11:02 |
|
|
start [/forum/topic.php?fid=46&msg=39901595&tid=1686728]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 426ms |
0 / 0 |