|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Имеется таблица со следующей схемой и данными: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Выполним следующий скрипт: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Выполнив запрос, были получены следующие блокировки: Вопрос : правильно ли я понимаю, что блокировка RangeS-U , для несуществующих записей, всегда установливает блокировку для ресурса (ffffffffffff) ? Если да, тогда получаем что, транзакции выполняющие вставку новых записей, предварительно выполнив блокировку RangeS-U , всегда будут конкурировать за блокировку одного и того-же ресурса (ffffffffffff) (что должно привести к "просадке" производительности)? Кстати, что это за такой ресурс (ffffffffffff) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 01:47 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
А вы вообще в курсе, зачем нужен IL = serializable? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 02:05 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, почему вы решили что "нет"? Лучше конечно ответьте на мой основной вопрос, если знаете ответ, или поправьте меня, если я где-то не прав в описаниях своих. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 02:12 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
ddzia Гавриленко Сергей Алексеевич, почему вы решили что "нет"? ddzia Лучше конечно ответьте на мой основной вопрос ddzia если знаете ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 02:19 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Попрвьате, если не прав: на самом деле (ffffffffffff) не ресурс, а функция блокировки диапазона ключей индекса, для которых была взята блокировка из первого select, хинтом serializable . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 02:23 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
ddzia, (ffffffffffff) - это максимальное значение диапазона возможных ключей. при TIL seriazlizable ключевое слово "диапазон" посмотрите как будут меняться блокировки в таком варианте тогда поймете почему блокируется предельное значение Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 03:32 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
felix_ff, а почему "прихватывается" ключ, который не требуется для защиты диапазона? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 12:57 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Владислав Колосов felix_ff, а почему "прихватывается" ключ, который не требуется для защиты диапазона? В каком случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:00 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
msLex, например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:14 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Владислав Колосов, Потому что используется единый механизм для уникальных и неуникальных индексов. А в случае неуникального индекса, из-за наличия уникализатора, обязательно нужно блокировать следующий диапазон. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:18 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Владислав Колосов, Так это и есть смысл блокировки "диапазона ключей" он должен обеспечить гарантию защиты все диапазона. верхняя его планка будет не значением условно последней строки вашего предиката а значением большим на 1. ну к примеру: (я сейчас образно нарисую что бы не рисовать "ключи" в виде хексов) есть у вас таблица id lockres11000210103102041030 если вы напишите Код: sql 1.
Вам возвратится 2 id: 1, 2 при этом ключи будут заблокированы по диапазону 1000-1020 почему спросите блокируется ключ 1020 если он не попадает в предикат? а представьте такую ситуацию Код: sql 1. 2. 3.
сразу опускаем условие что используется первичный ключ должна будет появится новая строка у которой [id] попадает под защиту "диапазона", что бы гарантировать такую защиту SQL не может явно взять только блокировки на 1000-1010, он должен потенциально защитится от новых вставок и что бы обеспечить такую защиту он берет блокировку на ключ больший ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:25 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
Спасибо, понятно. Упустил из вида, что сервер занимается "приписками" для уникальности. То есть возможна ситуация, когда вставляемая двойка может быть больше, чем уже вставленная, но меньше тройки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:45 |
|
Оптимальна ли блокировка RangeS-U для ресурса (ffffffffffff)?
|
|||
---|---|---|---|
#18+
felix_ff он должен обеспечить гарантию защиты все диапазона. верхняя его планка будет не значением условно последней строки вашего предиката а значением большим на 1. В данном конкретном случае такой эффект связан с направлением сканирования индекса. Если напишите Код: sql 1.
будет заблокирован только один диапазон ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:49 |
|
|
start [/forum/topic.php?fid=46&msg=40008437&tid=1685537]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 149ms |
0 / 0 |