Производительность запросов к хранилищу данных SQL Server 2008 - Эвристика соединения типа «звезда»

ОГЛАВЛЕНИЕ

 

Эвристика соединения типа «звезда»

Многие физические модели хранилищ данных используют схему «звезда», но не полностью указывают отношения между таблицами измерения и фактов, как, например, с упомянутыми выше ограничениями внешнего ключа. Если ограничения внешнего ключа не заданы явно, SQL Server должен определять последовательности запросов в схеме «звезда» с помощью эвристики. Для этого применяется следующая эвристика.

  1. Наибольшая из таблиц, участвующих в n-арном соединении, считается таблицей фактов. Есть дополнительные ограничения на минимальный размер таблицы фактов. Например, если даже наибольшая таблица меньше определенного размера, n-арное не считается соединением типа «звезда».
  2. Все условия соединения двоичных соединений запроса типа «звезда» должны быть предикатами равенства обного столбца. Соединения должны быть внутренними. Это может показаться ограничением, но сюда попадает большинство соединений между таблицей фактов и таблицами измерений на суррогатных ключах в типичных схемах типа «звезда». Если соединение имеет более сложные условия, не соответствующие описанной выше схеме, оно исключается из соединения типа «звезда». Например, пятисторонное соединение может привести к трехстороннему (с двумя дополнительными позже), если два соединения имеют более сложные предикаты.

Заметьте, что это правила эвристики. В действительности ситуаций, в которых эвристика перепутает таблицу фактов с таблицей измерений, немного. Это влияет на выбор плана, но не изменяет правильности выбранного плана. Двоичные соединения, вовлеченные в запрос типа «звезда», затем сортируются по убыванию избирательности. Избирательность соединения в этом контексте определяется как отношение мощности ввода таблицы фактов и итоговой мощности соединения, то есть избирательность соединения означает, насколько определенное измерение уменьшает мощность таблицы фактов. В общем случае следует рассматривать соединения с большей избирательностью первыми.

Процессор запроса SQL Server автоматически применяет оптимизацию к запросам, соответствующим схеме "звезда" и упомянутым выше условиям, когда получаемые планы запроса оцениваются как выгодные. Поэтому нет необходимости изменять свое приложение, чтобы воспользоваться этим способом увеличения производительности. Заметьте, что некоторые из оптимизаций запроса типа «звезда», такие, как уменьшение соединения, доступны только в версии сервера SQL Server Enterprise Edition.