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

Откуда:
Сообщений: 102
Добрый день!
Есть таблица размер 1 Гб, размер индексов 20Мб(4 индекса).
Табилца отвечает за отправку сообщений по почте, после отправки удаляет поля.
Проблема в том что индексы устаревают на 90% после 30 минут работы. Создается большое время ожидания в обращениях.
План приложенил. Время ожидания в день составляет около 7 часов.
Почитал по удалению, не могу понять как можно оптимизировать такой быстро меняющийся поток:(

К сообщению приложен файл. Размер - 16Kb
15 мар 19, 11:32    [21833471]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

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

"Создается большое время ожидания в обращениях." у вас куча и скан, удёления ждут друг друга и вставки соотвественно
15 мар 19, 11:38    [21833483]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
Den_KP
Проблема в том что индексы устаревают на 90% после 30 минут работы.
Как это "индексы устаревают"?
Индексы у вас всегда свеженькие, обновление индексов происходит прямо в транзакции обновления данных.

Den_KP
Создается большое время ожидания в обращениях.
План приложенил.
Для такого запроса можно и хинт указать.
tps_guid уникальный или как?
Лучше, конечно, приложить план (не estimated) в формате sqlplan, и скрипт создания таблицы с индексами.
15 мар 19, 11:40    [21833490]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

Откуда:
Сообщений: 102
Если результатом скана будет одно значение, тогда стоит ли использовать index seek?
15 мар 19, 11:42    [21833493]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
Den_KP
Если результатом скана будет одно значение, тогда стоит ли использовать index seek?

что?
15 мар 19, 11:45    [21833498]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
Den_KP
Если результатом скана будет одно значение, тогда стоит ли использовать index seek?
Если в таблице 3 записи, то стоит.

Повторю ещё раз:
alexeyvg
Лучше, конечно, приложить план (не estimated) в формате sqlplan, и скрипт создания таблицы с индексами.
15 мар 19, 11:50    [21833514]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

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

С хинтами сложнее, запрос зашит в прикладе, поэтому нужно по-возможности реализовать на уровне БД, а если это не поможет тогда уже собрать аналитику и выкатывать рекомендацию разработчикам.
tps_guid - PK и уникальный.
Файлs вложил.

К сообщению приложен файл (createdb+plan.sql - 10Kb) cкачать
15 мар 19, 11:51    [21833517]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
Den_KP
alexeyvg,

С хинтами сложнее, запрос зашит в прикладе, поэтому нужно по-возможности реализовать на уровне БД, а если это не поможет тогда уже собрать аналитику и выкатывать рекомендацию разработчикам.
tps_guid - PK и уникальный.
Файлs вложил.

смотрите в свои функции на контрейнах, они вызывают скан
15 мар 19, 12:00    [21833529]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
точнее нет там функций :)
FK сам на себя
15 мар 19, 12:05    [21833539]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

Откуда:
Сообщений: 102
FK который tps_copy_with_guid?
15 мар 19, 12:08    [21833544]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
Den_KP
FK который tps_copy_with_guid?

да
<ScalarOperator ScalarString="[IV-20173].[dbo].[tps_user_message_recipient].[tps_copy_with_guid]=[IV-20173].[dbo].[tps_user_message_recipient].[tps_guid]">
15 мар 19, 12:08    [21833545]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 8441
Индекс добавьте по [tps_copy_with_guid]
15 мар 19, 12:14    [21833556]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

Откуда:
Сообщений: 102
А есть ли смысл добавлять, если в этой колонке все значения NULL?
15 мар 19, 12:17    [21833567]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
Den_KP
А есть ли смысл добавлять, если в этой колонке все значения NULL?

смысл этой колонки и FK сходу не ясен.
индекс заменит скан на seek. А так вообще определитесь нужна ли колонка или нужен ли референс
15 мар 19, 12:19    [21833573]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

Откуда:
Сообщений: 102
Изучил, похоже что это Баг приложения.
Сейчас направлю тикет для изучения.
Позже обязательно отпишусь о результате!
И по рекомендации добавлю иденкс для организации seek-а.
Большое спасибо за помощь!
15 мар 19, 12:34    [21833596]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
Den_KP
Изучил, похоже что это Баг приложения.
Сейчас направлю тикет для изучения.
Позже обязательно отпишусь о результате!
И по рекомендации добавлю иденкс для организации seek-а.
Большое спасибо за помощь!

если это рудимент, то просто прибейте референс и ничего больше не надо
15 мар 19, 12:36    [21833602]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

Откуда:
Сообщений: 102
Проблема в том что я незнаю как функционал зацеплен на это, есть риск что сломается.
Это поле видно в прикладе и его нельзя там отрубить, только хотфиксом от вендора.
Если результата от вендора не будет, тогда сдклаю индекс.
15 мар 19, 13:04    [21833665]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6025
Den_KP
Проблема в том что я незнаю как функционал зацеплен на это, есть риск что сломается.
Это поле видно в прикладе и его нельзя там отрубить, только хотфиксом от вендора.
Если результата от вендора не будет, тогда сдклаю индекс.

я и не предлагаю "отрубать"... в общем общайтесь с вендором
15 мар 19, 13:05    [21833669]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
Den_KP
А есть ли смысл добавлять, если в этой колонке все значения NULL?
Вот сервер и сканирует всю таблицу, что бы узнать, все там NULL, или есть записи, ссылающиеся на удаляемый tps_guid
15 мар 19, 13:53    [21833781]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
Den_KP
Проблема в том что я незнаю как функционал зацеплен на это, есть риск что сломается.
Это поле видно в прикладе и его нельзя там отрубить, только хотфиксом от вендора.
Если результата от вендора не будет, тогда сдклаю индекс.
Да сделайте индекс, и всё, в чём проблема, зачем мучаться, пока вендор ответит?
Будет лишняя нагрузка при вставке, но она неставнима со сканом при каждом удалении, просто разница в тысячи раз.
15 мар 19, 13:55    [21833786]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
Den_KP
Проблема в том что я незнаю как функционал зацеплен на это, есть риск что сломается.
Это поле видно в прикладе и его нельзя там отрубить, только хотфиксом от вендора.
Так TaPaK не предлагает удалить поле, оен предлагает удалить референс.
Понятно, что приложение может референсы проверять, но обычно так никто не делает, ну а функционально он не нужен, т.к. поле всегда NULL

Но это ладно, индекс то точно никому не помешает. Обычный, неуникальный.
15 мар 19, 13:57    [21833791]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2197
alexeyvg
Но это ладно, индекс то точно никому не помешает. Обычный, неуникальный.
Или фильтрованный. Будет почти пустой.
19 мар 19, 01:04    [21836692]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Den_KP
Member

Откуда:
Сообщений: 102
Саппорт у вендора как у черепахи, до сих пор мурыжат вопрос.
Руки чешуться добавить индекс, но проблема в том что если что то колыхнеться 3 шкуры сдерут, поэтому работа должна отлежаться)))
Я понимаю, что референс у них прям зашит в процессах, поэтому это похоже именно тот случай.
19 мар 19, 06:58    [21836787]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31131
Блог
Den_KP,

Если у вас там одна запись, одно чтение, и одно удаление, то я подумал бы над необходимостью индексов.
19 мар 19, 11:26    [21837037]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация при удалении данных из таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
Den_KP
Руки чешуться добавить индекс, но проблема в том что если что то колыхнеться 3 шкуры сдерут, поэтому работа должна отлежаться)))
Я понимаю, что референс у них прям зашит в процессах, поэтому это похоже именно тот случай.
Уже говорили, что референс и индекс никак не связаны.
Референс удалять нельзя, а вот добавление индекса не должен ни на что повлиять. Но если он не нужен (то есть устраивает низкая скорость), то можно и не добавлять. За низкую скорость у вас же никогда никого не выгоняли, так что можно забить.
19 мар 19, 18:20    [21837655]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить