SQL Azure Федерации и индексы - Разъяснения по производительности
В настоящее время у нас есть федеративная БД SQL, разделенная на 10 сегментов в примерно равных частях данных, отфильтрованных по идентификатору клиента.
В настоящее время мы испытываем проблемы с производительностью при выполнении отфильтрованных запросов, например, выполнение запроса для определенного клиента может занять более 3 минут, чтобы вернуть 4000 строк в некоторых сегментах. Однако выполнение точно такого же запроса в нефильтрованном соединении на одном и том же шарде возвращается в течение 4 секунд. Один примечательный аспект заключается в том, что осколки, испытывающие замедление, обычно содержат больше клиентов, хотя и с меньшим количеством данных. Наиболее вероятным ограничителем производительности (я полагаю) будет индексирование и что-то, что связано с соединением Filtered / Нефильтрованный.
Обыскав вокруг, я не нашел много информации о производительности запросов по осколкам / конкретным стратегиям индексации над осколками (кроме Azure, очевидно, не поддерживает индексированные представления). У меня сложилось впечатление (и, следовательно, необходимость в разъяснении), что индексы применяются ко всем элементам сегмента, а не к элементу для каждого участника.
Если первое, то мы в некотором роде, за исключением изменения этого конкретного фрагмента, который не имеет смысла, учитывая, что единственное отличие - это количество клиентов, а не размер данных. Пара вещей, которые мы собираемся попробовать, это явное добавление фильтра к индексам или даже добавление фильтра к каждому запросу. Можно с уверенностью сказать, что мы не рады уходить от фильтрованного соединения.
Кто-нибудь еще сталкивался с этой проблемой или мог бы дать какое-то указание, что нефильтрованное соединение значительно превосходит фильтрованное соединение?
Заранее спасибо...
1 ответ
Индексы в федерациях применяются на основе членства федерации. Если вы начали с одного индексированного члена и выполнили операцию SPLIT, то индексы автоматически применяются к продуктам SPLIT. Но если вы применили индексы после создания нескольких членов, вам нужно явно добавить индексы для каждого члена.
Так что, надеюсь, вы не в рассоле.
Возможно, вы захотите рассмотреть альтернативы федерациям, движущимся вперед, поскольку эта функция не поддерживается новыми SKU, анонсированными в апреле.