параллельные запросы в T-SQL - PullRequest
1 голос
/ 06 апреля 2009

У меня есть длинная хранимая процедура, которая выполняет много запросов и генерирует отчет. Так как это сводный отчет, он вызывает много других процедур для получения данных. Я задаюсь вопросом, возможно ли выполнить параллельные пакеты sql с помощью proc на сервере SQL ...

большое спасибо

Ответы [ 3 ]

1 голос
/ 07 апреля 2009

Нет, SQL Server не выполняет параллелизм в том смысле, который, как я думаю, вы имеете в виду.

Как долго работает код? Это проблема?

Редактировать, основываясь на комментарии.

11-20 секунд для большого сводного отчета совсем не плохо.

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

1 голос
/ 07 апреля 2009

Лучше всего сообщать о подобных вещах из другой базы данных. Либо на основе преобразований из вашей производственной базы данных в базу данных OLAP (что приведет к исчезновению временной задержки), либо, по крайней мере, периодический (скажем, почти) статический снимок (который сделает задержку неважной), вы можете отключить блокировку, потому что ничего не изменится).

Дополнительное преимущество: читатели отчетов будут намного счастливее, если отчеты будут разбираться на пять минут с одинаковыми ответами. Или с интервалом 12 часов.

Преимущество, которое вы оцените больше всего, заключается в том, что жизнь станет проще.

0 голосов
/ 06 апреля 2009

Я думаю, вам придется выполнить параллелизм в коде (многопоточные вызовы sql) и объединить результат в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...