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

Откуда: in the middle of nowhere
Сообщений: 532
TaPaK
AlphaDog
пропущено...


Я помню про дедлоки. И даже знаю почему они возникают. И, более того, даже знаю технические причины почему возникают дедлоки и как вообще SQL Server работает с блокировками и как он их эскалирует и почему. А так же я знаю к чему в результате этот букет приводит.

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

в любой непонятной ситуации меняй кластерный на не кластерный, главное уверенно рассказывай что знаешь о чём речь


В любой непонятной ситуации читай документацию.

https://www.sql.ru/articles/mssql/03013101indexes.shtml
9 сен 16, 10:31    [19646146]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
AlphaDog
TaPaK
прям кладезь...
пропущено...

пропущено...

вы может пропустили часть когда изучали индексы


Я? Сколько вы готовы поставить на это свое утверждение? :)

что вы, проблема сплита страницы это первая причина дедлоков, мы все знаем что PK это для красоты и вообще не ясно как он появляется, и тут главное вот здесь всё написано https://msdn.microsoft.com/
9 сен 16, 10:35    [19646164]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
invm
Member

Откуда: Москва
Сообщений: 9915
AlphaDog
Смените индекс для PK с кластерного на некластерный.
Может вы нам поведаете как это разрешит данный конкретный дедлок?
А еще поясните - как ваша рекомендация повлияет на остальные запросы к таблице?

deadlock123456
Как я понимаю решение одно - убрать поле из include?
По крайней мере, это самое очевидное. Опять же, нужно смотреть как себя поведут другие запросы.
9 сен 16, 10:43    [19646208]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
TaPaK
AlphaDog
пропущено...


Я? Сколько вы готовы поставить на это свое утверждение? :)

что вы, проблема сплита страницы это первая причина дедлоков, мы все знаем что PK это для красоты и вообще не ясно как он появляется, и тут главное вот здесь всё написано https://msdn.microsoft.com/


В отличии от вас, я дал ссылку на свою статью, а вы нет.
9 сен 16, 10:45    [19646210]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
invm
AlphaDog
Смените индекс для PK с кластерного на некластерный.
Может вы нам поведаете как это разрешит данный конкретный дедлок?
А еще поясните - как ваша рекомендация повлияет на остальные запросы к таблице?

deadlock123456
Как я понимаю решение одно - убрать поле из include?
По крайней мере, это самое очевидное. Опять же, нужно смотреть как себя поведут другие запросы.


1 возможно уберет ненужные блокировки за счет уменьшения необходимости делать лишние сплиты. Дедлок может вполне появляться по причине эскплации блокировки
2 никак не повлияет. Особенно если построить кластерный индекс по любому короткому полю

3 вы хотите убрать мизерную добавку к перегруженному индексу? И какого результата вы ожидаете?
9 сен 16, 10:52    [19646243]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
AlphaDog
1 возможно уберет ненужные блокировки за счет уменьшения необходимости делать лишние сплиты.
Проблема сплитов решается регулярным ребилдом.

AlphaDog
Дедлок может вполне появляться по причине эскплации блокировки
Эскалация отключаема на уровне таблицы.
AlphaDog
2 никак не повлияет. Особенно если построить кластерный индекс по любому короткому полю
Опрометчиво заявлять такое. Вполне может быть, 99% запросов идут именно по кластерному индексу. После его изменения, в половине их них появится лукап в кластерный, другая половина свалится в скан кластерного, чтобы этот лукап не делать.

Сообщение было отредактировано: 9 сен 16, 10:58
9 сен 16, 10:57    [19646275]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
AlphaDog,

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

напомнить что у нас update и вообще не кластерного поля? по прежнему сплиты будут?
9 сен 16, 11:04    [19646312]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
invm
Member

Откуда: Москва
Сообщений: 9915
AlphaDog
1 возможно уберет ненужные блокировки за счет уменьшения необходимости делать лишние сплиты.
И какие же сплиты кластерного могут возникнуть при таком апдейте?
AlphaDog
Дедлок может вполне появляться по причине эскплации блокировки
Не может. Потому что эскалации никогда не будет при несовместимых блокировках в разных сессиях.
AlphaDog
2 никак не повлияет.
Т.е. планы выполнения запросов останутся прежними?
AlphaDog
3 вы хотите убрать мизерную добавку к перегруженному индексу? И какого результата вы ожидаете?
Это очевидно - исчезнет необходимость менять листовой уровень некластерного, следовательно, дедлока не будет.
9 сен 16, 11:05    [19646318]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
o-o
Guest
AlphaDog
invm
Может вы нам поведаете как это разрешит данный конкретный дедлок?
А еще поясните - как ваша рекомендация повлияет на остальные запросы к таблице?


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

это вы нам сейчас вываливаете краткое содержание всего,
прочитанного вами за последнее время?
коней в вакууме обсуждаете или есть, что по этой теме сказать?
граф делдока вообще смотрели?
там блокировки ключа.
что там куда эскалировалось?
9 сен 16, 11:10    [19646334]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
Ребилд мало помогает для часто обновляемых таблиц с кластерным индексом на GUID


Остальное отвечу позже.
9 сен 16, 11:10    [19646340]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
AlphaDog
Ребилд мало помогает для часто обновляемых таблиц с кластерным индексом на GUID


Остальное отвечу позже.

Это как сказать: тыканье пальцем в стену не часто приводит к перелому ноги. Умеем лечить только зелёнкой, хоть геморой, хоть аyгину, снапшот автору предлагать будем? :)
9 сен 16, 11:14    [19646358]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
o-o
Guest
AlphaDog
invm, deadlock123456
убрать поле из include

3 вы хотите убрать мизерную добавку к перегруженному индексу? И какого результата вы ожидаете?

хватит тему засирать.
не надо будет некластерный апдэйтить,
дедлок уйдет.
обсуждайте свои абстракции в другом месте
или как минимум кончайте хаять осмысленные пути решения,
не угодившие вам только тем, что автор не вы
9 сен 16, 11:15    [19646361]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
o-o
Guest
AlphaDog
Ребилд мало помогает для часто обновляемых таблиц с кластерным индексом на GUID
Остальное отвечу позже.

Гавриленко, ну перенесите его уже в отдельную тему
"щас я вам расскажу за жизнь by AlphaDog"
9 сен 16, 11:16    [19646372]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2428
AlphaDog
Вообще за такое нужно наказывать

[Id] [uniqueidentifier] NOT NULL,

PRIMARY KEY CLUSTERED
(
[Id] ASC

Но, я вижу, оно уже....


ну например 1с-ка тоже вся на этом. все тупые?
9 сен 16, 11:18    [19646377]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
TaPaK
AlphaDog
Ребилд мало помогает для часто обновляемых таблиц с кластерным индексом на GUID


Остальное отвечу позже.

Это как сказать: тыканье пальцем в стену не часто приводит к перелому ноги. Умеем лечить только зелёнкой, хоть геморой, хоть аyгину, снапшот автору предлагать будем? :)

Иди уже...
9 сен 16, 11:30    [19646437]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
o-o
AlphaDog
пропущено...

3 вы хотите убрать мизерную добавку к перегруженному индексу? И какого результата вы ожидаете?

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


Ваша воля. У меня такое вылечилось именно описанным способом.
9 сен 16, 11:32    [19646442]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
StarikNavy
AlphaDog
Вообще за такое нужно наказывать

[Id] [uniqueidentifier] NOT NULL,

PRIMARY KEY CLUSTERED
(
[Id] ASC

Но, я вижу, оно уже....


ну например 1с-ка тоже вся на этом. все тупые?


Вполне возможно.
9 сен 16, 11:33    [19646446]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
StarikNavy
AlphaDog
Вообще за такое нужно наказывать

[Id] [uniqueidentifier] NOT NULL,

PRIMARY KEY CLUSTERED
(
[Id] ASC

Но, я вижу, оно уже....


ну например 1с-ка тоже вся на этом. все тупые?


Или есть сомнения, что Azure пишут более глупые чем 1С?

https://azure.microsoft.com/en-us/blog/uniqueidentifier-and-clustered-indexes/
9 сен 16, 11:37    [19646475]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
o-o
Guest
AlphaDog
o-o
пропущено...

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


Ваша воля. У меня такое вылечилось именно описанным способом.

нет, воля не моя, я не модератор,
но он тут есть.

давайте так:
Гавриленко судья,
расскажите, как смена ключа кластерного избавит от необходимости апдэйтить и кластерный,
и некластерный с обновляемым полем в инклуде.
и если вы сейчас будете нести прочие левости
и никак не объясните, что же перестанет апдэйтиться после смены ключа кластеного:
LatestAutoPostModifiedO в кластерном или LatestAutoPostModifiedO в некластерном,
он вам закроет вход в эту тему, да?

хотите еще нести, открываете свою тему и продолжаете свой выплеск там
9 сен 16, 11:43    [19646506]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
o-o
расскажите, как смена ключа кластерного избавит от необходимости апдэйтить и кластерный,
и некластерный с обновляемым полем в инклуде.


А борьба идет ради избавления необходимости апдейтить индексы? Как мне казалось, для победы над дедлоком нужно стремиться к иному результату.
9 сен 16, 11:49    [19646535]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
AlphaDog
Member

Откуда: in the middle of nowhere
Сообщений: 532
Гавриленко Сергей Алексеевич
Эскалация отключаема на уровне таблицы.


Мы боремся же не с эскалацией и не с самими локами, да?

Гавриленко Сергей Алексеевич
AlphaDog
2 никак не повлияет. Особенно если построить кластерный индекс по любому короткому полю
Опрометчиво заявлять такое. Вполне может быть, 99% запросов идут именно по кластерному индексу. После его изменения, в половине их них появится лукап в кластерный, другая половина свалится в скан кластерного, чтобы этот лукап не делать.


Учитывая, что в данной конфигурации таблицы и индексов, лукап дешевле выйдет, как и скан по новому короткому индексу, то заявление не вполне опрометчивое.

Вообще, вся тема дедлоков, если они не могут быть разрешены на уровне выправления кода, должна и может говориться со словом "Возможно" - потому как единственное что можно попробовать сделать,это уменьшить длину транзакций. Это может привести к тому, что дедлоки уйдут. Либо вообще, либо их количество существенно уменьшится.
9 сен 16, 11:55    [19646569]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
o-o
Guest
AlphaDog
для победы над дедлоком нужно стремиться к иному результату.

жопа какая-то.
и к чему же надо стремиться?
перескажите нам суть данного дедлока своими словами,
увиливатель хренов
9 сен 16, 11:57    [19646590]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
invm
Member

Откуда: Москва
Сообщений: 9915
AlphaDog
Учитывая, что в данной конфигурации таблицы и индексов, лукап дешевле выйдет
use tempdb;
go

create table dbo.t1
(
 id uniqueidentifier not null,
 LatestManualPostModifiedOn datetime null,
 LatestAutoPostModifiedOn datetime null,
 TypeCode int not null
);

insert into dbo.t1
select top (10000000)
 newid(), getdate(), getdate(), 1
from
 master.dbo.spt_values a cross join
 master.dbo.spt_values b cross join
 master.dbo.spt_values c;

select * into dbo.t2 from dbo.t1;
select * into dbo.t3 from dbo.t1;

alter table dbo.t1 add constraint PK_t1 primary key clustered (Id);
alter table dbo.t2 add constraint PK_t2 primary key nonclustered (Id);

alter table dbo.t3 add row_id int identity not null;
alter table dbo.t3 add constraint PK_t3 primary key clustered (row_id);
create unique nonclustered index IX_t3__id on dbo.t3(id);

select * from sys.dm_db_index_physical_stats(db_id(), object_id('dbo.t1', 'U'), default, default, default);
select * from sys.dm_db_index_physical_stats(db_id(), object_id('dbo.t2', 'U'), default, default, default);
select * from sys.dm_db_index_physical_stats(db_id(), object_id('dbo.t3', 'U'), default, default, default);
go

declare @id uniqueidentifier = (select top(1) id from dbo.t2);

set statistics io on;
select * from dbo.t1 where id = @id;
select * from dbo.t2 where id = @id;
select * from dbo.t3 where id = @id;
set statistics io off;
go

drop table dbo.t1, dbo.t2, dbo.t3;
go
Можете оценить глубину индексов и затраты на точечный поиск по id.

ЗЫ: Конкретного ответа, чем же замена кластерного ПК на некластерный поможет ТС'у избежать дедлока, от вас так и нету.
9 сен 16, 14:22    [19647349]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
o-o
Guest
invm
...code...

бисер перед свином, прости господи.
invm
Конкретного ответа, чем же замена кластерного ПК на некластерный поможет ТС'у избежать дедлока, от вас так и нету.

так он и дедлок-то не видел,
просто прочел, что он есть в заголовке темы
отсюда и эскалация (которой там нет)
и сплиты при инсерте в кластерный (у ТС вообще-то апдэйт datetime-а,
который ничего не сплитит, у datetime же фиксированный размер)
а конкретные ответы он и не даст,
ему же надо было пятнично высказаться за жизнь.
навалил и отвалил
Картинка с другого сайта.
9 сен 16, 15:09    [19647603]     Ответить | Цитировать Сообщить модератору
 Re: Deadlock - помогите пожалуйста разобраться  [new]
invm
Member

Откуда: Москва
Сообщений: 9915
o-o
бисер перед свином, прости господи.
Это не столько для AlphaDog, сколько для тех, кто повелся на его утверждения.
9 сен 16, 15:48    [19647830]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить