powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Индексы и снижение производительности
11 сообщений из 11, страница 1 из 1
Индексы и снижение производительности
    #39940194
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каких случаях форсированное применение индекса с помощью хинта может привести к снижению производительности всей БД?
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940195
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
В каких случаях форсированное применение индекса с помощью хинта может привести к снижению производительности всей БД?

Например, скан большого индекса, вместо поиска по ключу(index-seek).
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940196
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тех, когда он не подходит для конкретного запроса.
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940199
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моем случае есть SPA-приложение, на странице есть множество фильтров. Я заметил, что при определенном сочетании фильтров запрос медленно работает. Я сделал индекс по 3 полям, которые используются в фильтре. Сам запрос достаточно сложный из-за сортировки и пагинации, SQL Server почему-то не захотел автоматически подхватывать этот индекс - планировщик говорит, что лучше без него. Так как запрос все равно генерится динамически, я анализирую условия фильтрации и, если они подходят, форсирую индекс хинтом. И действительно, запрос по нужному фильтру стал выполняться быстро. Но, выкатив это дело на прод, увидели, что БД стала работать медленнее в целом, даже в тех запросах, которые не связаны с затронутой таблицей. Пытаюсь понять, как так вышло и как точно установить, что виновата данная оптимизация.
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940203
AlexBra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Interloper,

>> даже в тех запросах, которые не связаны с затронутой таблицей
значит не ней проблема
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940222
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
В моем случае есть SPA-приложение, на странице есть множество фильтров. Я заметил, что при определенном сочетании фильтров запрос медленно работает. Я сделал индекс по 3 полям, которые используются в фильтре. Сам запрос достаточно сложный из-за сортировки и пагинации, SQL Server почему-то не захотел автоматически подхватывать этот индекс - планировщик говорит, что лучше без него. Так как запрос все равно генерится динамически, я анализирую условия фильтрации и, если они подходят, форсирую индекс хинтом. И действительно, запрос по нужному фильтру стал выполняться быстро. Но, выкатив это дело на прод, увидели, что БД стала работать медленнее в целом, даже в тех запросах, которые не связаны с затронутой таблицей. Пытаюсь понять, как так вышло и как точно установить, что виновата данная оптимизация.


Ситуация вполне стандартная и распространенная.

Есть большая таблица или даже комплекс таблиц и надо организовать поисковую систему. Со временем это обрастает кучей индексов и вы получаете "форсированное применение индекса с помощью хинта может привести к снижению производительности всей БД".

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

Решения такие
1) Подготовить структуру данных специально ориентированную на поиск, где данные уложены в другом виде и позволяют быстро получать то, что надо. Например, таблицы предварительной сортировки или фильтрации.
2) Вместо конгломерата индексов использовать колумнстор (не всегда, но во многих случаях помогает)
3) Воспользоваться специализированным поисковым движком, типа Elasticsearch (или кто-то может посоветовать что-то другое)
4) Применить кеширование поисковых результатов
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940275
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

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

Если же эта таблица используется и как витрина и как средство хранения данных одновременно, то функциональность можно разделить - данные для обработки отдельно, витрина отдельно. Организовать сбор витрины, настроить индексы, для витрины их может быть много, а рабочие таблицы максимально облегчить от индексов.
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940355
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
В каких случаях форсированное применение индекса с помощью хинта может привести к снижению производительности всей БД?
В случае, если на тесте стало быстрее - значит, получился план, который делает запрос более быстрым, но потребляющим больше ресурсов.

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

Ещё можно попереключать туда-сюда - а то, может, вы ещё что то поменяли, люди иногда при отладке меняют что то пачками, а потом додумывают, какое из изменений привело к результату.
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940467
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Но, выкатив это дело на прод, увидели, что БД стала работать медленнее в целом, даже в тех запросах, которые не связаны с затронутой таблицей.

Столкнулся с такой же ситуацией.
Теперь на тесте и проде у меня разные индексы на разных таблицах.
Просто принял как данность.
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39940946
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
Interloper
В каких случаях форсированное применение индекса с помощью хинта может привести к снижению производительности всей БД?
В случае, если на тесте стало быстрее - значит, получился план, который делает запрос более быстрым, но потребляющим больше ресурсов.

Или быстрее стало работать на том наборе данных, с которым тестировали, но этот набор оказался неполным, не отражающим запросы на проде.

Или прода и тест настроены по-разному. MSSQLSERVER, я имею ввиду.
Например, может очень сильно влиять разница в collations. Фатально, я б сказал.
...
Рейтинг: 0 / 0
Индексы и снижение производительности
    #39941057
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster,

авторИли прода и тест настроены по-разному.

В этом случае тест ничего не тестирует и смысла в нём нет никакого. Чисто размяться.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Индексы и снижение производительности
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]