Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление данных  [new]
Lisichkin
Member

Откуда:
Сообщений: 487
Добрый день!
Имеется таблица T1 с Unique Clustered Primary Key.
На таблицу T1 ссылаются около 30 других таблиц.

При попытке удалить из T1 примерно 100 записей по Primary Key происходит затык в базе секунды на 2-3.
На плане запроса на удаление видно, что сервер перед удалением применяет Clustered Index или Index Seek для проверки в дочерних таблицах на наличие forein key… и так на все 30 таблиц. :(

Помогите оптимизировать удаление.
P.S. Изменить схему данных, где на одну таблицу смотрит множество других, пока не представляется возможным :(

С Уважением,
Александр.
23 сен 11, 18:51    [11329267]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
Lisichkin
Member

Откуда:
Сообщений: 487
И звените, забыл MS SQL 2005 SP3
23 сен 11, 18:52    [11329277]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
iljy
Member

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

а где узкое место? Дисковая, процессор, блокировки - выяснили уже? Или вы хотите, чтобы сервер при удалении не проверял целостность?
23 сен 11, 19:07    [11329330]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
Lisichkin
Member

Откуда:
Сообщений: 487
Узкое место-слишком долгое время исполнения запросов на удаление(и частое)
Которые вызывают зависания в работе других запросов к базе или дедлоки.
Вопрос: есть ли механизмы для ускорения удаления?
23 сен 11, 19:23    [11329388]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Если схему менять нельзя, то что можно?
23 сен 11, 19:49    [11329519]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
iljy
Member

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

понятно, причина поломки - поломка.
23 сен 11, 20:07    [11329594]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
Lisichkin
Member

Откуда:
Сообщений: 487
Все по порядку:
Имеется информационная система, в составе которой реализован модуль загрузки данных из внешнего источника.
Данные поступают в виде xml файлов. Внешние данные не имеют уникальных идентификаторов, поэтому при повторном поступлении, сначала происходит удаление, а потом закачка.
Пользователи стали жаловаться на большие задержки в работе информационной системы и частые dedlock'и.
Данные профиллера показали что тормоза происходят не при выборки или вставке данных, а в момент удаления первично закаченных внешних данных.
Варианты решения проблемы:
1. Забить на звонки пользователей;
2. Переписать информационная система за ново;
3. Иное
Меня интересует есть ли ИНОЕ решение этой проблемы???????

С Уважением,
Александр.
23 сен 11, 20:26    [11329650]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Lisichkin
Меня интересует есть ли ИНОЕ решение этой проблемы???????
Найти узкое место и устранить.

План запроса смотрели? Точно везде только Seek?
Lisichkin
сервер перед удалением применяет Clustered Index
То-есть есть FK со связью 1:1 ?
Lisichkin
2. Переписать информационная система за ново;
Так-же? :-)
23 сен 11, 20:44    [11329715]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
FK you
Guest
Lisichkin,

причину вы уже сами нашли - FK. и томоза, и дедлоки - оттуда.
несмотря на то что у сиквела есть такая штука как FK и в диаграммах эти стрелочки вполне симпатичненько смотрятся, пользоваться ими вовсе не обязательно.
23 сен 11, 20:47    [11329726]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
FK you
Lisichkin,

причину вы уже сами нашли - FK. и томоза, и дедлоки - оттуда.
Дедлоки и тормоза обычно от кривых рук. В 99% случаев виноват разработчик базы, не сделавший индексы на поля - сиквел их автоматом не создаёт, поскольку обычно записи из парент-таблицы редко удаляют.
Не знаю, конечно, как у ТС - может, индексы и есть, но для проверки 100 записей в 30 таблицах несколько минут - очень много.
23 сен 11, 21:02    [11329772]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
alexeyvg
несколько минут - очень много.
А, несколько секунд... Всё равно многовато...

В общем, для начала посмотреть планы.
23 сен 11, 21:03    [11329775]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
FK you
Guest
alexeyvg
FK you
Lisichkin,

причину вы уже сами нашли - FK. и томоза, и дедлоки - оттуда.
Дедлоки и тормоза обычно от кривых рук. В 99% случаев виноват разработчик базы, не сделавший индексы на поля - сиквел их автоматом не создаёт, поскольку обычно записи из парент-таблицы редко удаляют.
Не знаю, конечно, как у ТС - может, индексы и есть, но для проверки 100 записей в 30 таблицах несколько минут - очень много.

если создать достаточное количество FK на одну таблицу, то можно и что то вроде out of memory/stack overflow при попытке удаление увидеть. точный текст ошибки не припомню.
23 сен 11, 21:06    [11329785]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
FK you
alexeyvg
Дедлоки и тормоза обычно от кривых рук. В 99% случаев виноват разработчик базы, не сделавший индексы на поля - сиквел их автоматом не создаёт, поскольку обычно записи из парент-таблицы редко удаляют.
Не знаю, конечно, как у ТС - может, индексы и есть, но для проверки 100 записей в 30 таблицах несколько минут - очень много.

если создать достаточное количество FK на одну таблицу, то можно и что то вроде out of memory/stack overflow при попытке удаление увидеть. точный текст ошибки не припомню.
Да, есть такое...

Но 30 всё таки не так критично...
23 сен 11, 21:21    [11329836]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
mssql2008
Member

Откуда:
Сообщений: 13
Lisichkin,
Тригера на DELETE в 30 таблицах?-> индексы по нужным полям?

ЗЫ Просто предположения, критикуйте.
24 сен 11, 01:51    [11330753]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
Lisichkin
Member

Откуда:
Сообщений: 487
Индексы есть, триггеров на таблицах нет.
Правда я в пятницу впопыхах не посмотрел сколько точно таблиц имеют foreign key на Т1 - их оказалось в два раза больше...:(

Я, кажется, нашел решение. Правда логическое. Если проблемы в удалении данных при закачке внешних данных - надо их не удалять а помечать на удаление.
Физическое удаление можно проводить в "безопасное" время - например ночью.
26 сен 11, 10:20    [11334913]     Ответить | Цитировать Сообщить модератору
 Re: Удаление данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Lisichkin
Я, кажется, нашел решение.
Вы всё таки индексы проверьте. Это по крайней мере дешевле раз в 10
26 сен 11, 10:59    [11335000]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить