Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Nimua,

Вам блокировка строк не поможет, т.к. при таких объемах изменений Вы будете блокировки строк держать достаточное время, чтобы происходили конфликты доступа.
7 июл 16, 15:37    [19381587]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Владислав Колосов
Nimua,

Вам блокировка строк не поможет, т.к. при таких объемах изменений Вы будете блокировки строк держать достаточное время, чтобы происходили конфликты доступа.


ну можно (rowlock,serializable)
7 июл 16, 15:39    [19381603]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Владислав Колосов,

К этим строкам (к тем конкретным, которые удаляются) не должно быть никакого другого доступа кроме этого JOBа.
7 июл 16, 15:56    [19381729]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
TaPaK,

тоже блокирует всю таблицу.
7 июл 16, 16:16    [19381835]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Nimua
TaPaK,

тоже блокирует всю таблицу.
Хинт влияет только на выбор сервером уровня гранулярности, но не моежет запретить этот уровень эскалировать впоследствии. Не устравивает эскалация, отключайте ее на уровне таблицы.
7 июл 16, 16:18    [19381841]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Nimua
Возвращаясь к исходной формулировке, а почему не выключить эскалацию на индексах и таблице - тогда точно будут блокироваться только строки, чем плохо это решение?
В нагруженной системе с конкурентным доступом к таблице на запись и чтение, эскалации блокировок очень маловероятна.

Ваша проблема - пытаетесь сразу лечить методом тыка, а не выяснить причину происходящего.
7 июл 16, 16:25    [19381882]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
invm,

А можно объяснение почему эскалация блокировок маловероятна?
7 июл 16, 16:29    [19381902]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
o-o
Guest
invm
В нагруженной системе с конкурентным доступом к таблице на запись и чтение, эскалации блокировок очень маловероятна.

ее не устраивает удаление пачками по 5000, хочет по 10-50 тыс.
а тогда срабатывает escalation based on number of locks held by a single statement.
пробует же с rowlock,
со страницами ее тоже не устраивает,
так если на каждую строку, то конечно 10-50 тыс. блокировок на стэйтмент
7 июл 16, 16:33    [19381928]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Nimua
А можно объяснение почему эскалация блокировок маловероятна?
Потому что есть конфликтующие блокировки других сессий.
Нельзя получить X на таблицу, если есть хотя-бы одна любая блокировка на ресурсы этой же таблицы в других сессиях.
7 июл 16, 16:39    [19381965]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
invm
Nimua
А можно объяснение почему эскалация блокировок маловероятна?
Потому что есть конфликтующие блокировки других сессий.
Нельзя получить X на таблицу, если есть хотя-бы одна любая блокировка на ресурсы этой же таблицы в других сессиях.
Сразу, наверное, нет, а постояв в очереди -- запросто.

UPD: действительно:

https://technet.microsoft.com/en-us/en-en/library/ms184286(v=sql.105).aspx
If the lock escalation attempt succeeds and the full table lock is acquired, then all heap or B-tree, page (PAGE), or row-level (RID) locks held by the transaction on the heap or index are released. If the full lock cannot be acquired, no lock escalation happens at that time and the Database Engine will continue to acquire row, key, or page locks.


Сообщение было отредактировано: 7 июл 16, 16:49
7 июл 16, 16:40    [19381973]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
invm,

тем не менее админы говорят что у них идет эскалация сразу же на уровень таблицы.
тут у меня нет доступа к проду, не могу ничего сказать.

В предыдущей высоконагруженной системе проблема была в том, что все новое писалось последовательно в конец, потом выбиралось и обновлялось - и там как раз была эскалация до уровня страниц, которую мы отключали и все становилось хорошо, не помню, чтобы я где то там отключала эскалацию на уровне таблицы.
7 июл 16, 16:42    [19381983]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Nimua
invm,

тем не менее админы говорят что у них идет эскалация сразу же на уровень таблицы.
тут у меня нет доступа к проду, не могу ничего сказать.

В предыдущей высоконагруженной системе проблема была в том, что все новое писалось последовательно в конец, потом выбиралось и обновлялось - и там как раз была эскалация до уровня страниц, которую мы отключали и все становилось хорошо, не помню, чтобы я где то там отключала эскалацию на уровне таблицы.
Эскалации до уровня страниц в MSSQL нет. Эскалация есть только до уровня таблицы.
7 июл 16, 16:50    [19382043]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Гавриленко Сергей Алексеевич
Сразу, наверное, нет, а постояв в очереди -- запросто.
Насколько я помню, запросы на эскалацию в очередь не ставятся. Просто проверяется возможность эскалации каждые 1250 блокировок.
7 июл 16, 16:51    [19382055]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Nimua
тем не менее админы говорят что у них идет эскалация сразу же на уровень таблицы.
тут у меня нет доступа к проду, не могу ничего сказать.
Вот и получается, что пытаетесь лечить по фотографии...
7 июл 16, 16:53    [19382067]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
invm,

это да :( надо было на собеседовании подробнее спрашивать про доступ.
7 июл 16, 16:59    [19382115]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Гавриленко Сергей Алексеевич,

по ссылке нашла вот такой флаг 1224 который отключает эскалацию блокировок, основанную на кол-ве строк. На мой взгляд это еще хуже чем отключение allow_page_locks = false, но опция. В теории.
7 июл 16, 17:08    [19382189]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Nimua
Гавриленко Сергей Алексеевич,

по ссылке нашла вот такой флаг 1224 который отключает эскалацию блокировок, основанную на кол-ве строк. На мой взгляд это еще хуже чем отключение allow_page_locks = false, но опция. В теории.
Лучше отключать штатными способами и на нужные таблицы.
7 июл 16, 17:20    [19382278]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Гавриленко Сергей Алексеевич,

Хорошо, спасибо.
7 июл 16, 17:50    [19382406]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
aleks2
Guest
Маленькая девочка приходит из яселек и спрашивает маму:

- Мам, а как дяди и тети попадают в телевизор?

Мама долго и подробно рассказывает как устроен телевизор, что такое студия и как снимаются телепрограммы.
После чего девочка задает второйц вопрос:

- Мам, а как они оттуда выходят?
7 июл 16, 18:17    [19382541]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Nimua,

у Вас sp_lock нет возможности выполнить?
7 июл 16, 18:22    [19382557]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Владислав Колосов,

На PRODе нет, то что я писалась касалось dev сервера, и исходя из информации про то что table lock не будет сделан на загруженной системе получается не подходит для PROD. Я могу попросить информацию о блокировках из профайлера у администраторов, проблема в том, что сейчас блок стоит маленький, и менять его без подтверждения сверху никто не будет.
Подумаю как можно это проверить.
8 июл 16, 10:25    [19384509]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
aleks2
Guest
Nimua
Владислав Колосов,

На PRODе нет, то что я писалась касалось dev сервера, и исходя из информации про то что table lock не будет сделан на загруженной системе получается не подходит для PROD. Я могу попросить информацию о блокировках из профайлера у администраторов, проблема в том, что сейчас блок стоит маленький, и менять его без подтверждения сверху никто не будет.
Подумаю как можно это проверить.


Вам что, нечего больше делать на работе?

Неужели можно быть настолько глупой, чтобы не понимать: даже если в Майкрософте сидят полные идиоты и у вас получится заставит MS SQL не укрупнять блокировки... чего станет лучше то?

ЗЫ. Вы, кажется, уже секционировали таблицу. С таким же результатом.

ЗЗЫ. А вам, гуру хреновы, должно быть стыдно.
8 июл 16, 10:50    [19384631]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
При массовых удалениях в активно используемой таблице лучше всего ставить признак "удалено", да еще и в отдельной сущности. Соответственно, внести архитектурные изменения в БД. Иначе это, действительно, припарки известно кому.
8 июл 16, 11:31    [19384875]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
aleks2,

Здравствуйте, почтенный троль.

Спасибо за ваши ценные комменты.

Как я уже писала выше, конфигурация с отключенными блокировками отлично работала на другой системе, тоже высоконагруженной.
8 июл 16, 14:22    [19386128]     Ответить | Цитировать Сообщить модератору
 Re: Хорошо ли выключать блокировки уровня страница и таблица  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Владислав Колосов,

Сейчас ставится признак удалено, но в этой же сущности. Далее этот джоб удаляет то, что отмечено как удаленное.
Признак удалено ставит пользователь, затем система еще какое то время хранит эти данные (вдруг пользователь одумается и восстановит), это время различается и настраивается пользователем, также есть правила по которым например строки с вхождением заданной пользователем подстроки хранятся дольше или меньше - зависит от настройки.
Как я понимаю можно еще завести один признак - удалено системой, это позволит разделить текущий джоб на тот который проверят правила хранения и тот который удаляет.
В идеале - еще иметь признак (например дату проверки правил), чтобы проверять можно было опять же блоками.
В итоге - будет простое удаление по признаку удалено системно, - уже это будет очень простая выборка, но все равно нужно удалить большое кол-во записей, которое хранится неопределенным образом в таблице вместе с активными записями.
Можно удалять блоки меньшего размера чаще, либо сделать удаление тех же меньших блочков через очередь, чтобы можно было увеличивать объем. Дело, в том что по сути - нужно удалить много данных не блокируя при этом те данные, которые активны.
8 июл 16, 14:36    [19386214]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить