Как отобразить общее время выполнения в SqlServer Management Studio 2005? - PullRequest
1 голос
/ 06 января 2009

Я обычно не использую Sql Server Management Studio, я обычно использую Linqpad для выполнения всех моих запросов к БД. Во всяком случае .... Мой босс, кажется, считает, что хранимые процессы "намного быстрее, чем linq".

Итак, чтобы проверить это, я хочу запустить простой сохраненный процесс и отобразить время, необходимое для запуска с оператором равенства linq.

Есть хорошие идеи о том, как этого добиться? Я уверен, что вы, ребята (и девочки) сталкивались с этим раньше.

Есть идеи, как сравнить это со временем выполнения оператора linq?

РЕДАКТИРОВАТЬ: Позвольте мне уточнить некоторые вещи; Во-первых, когда мой босс говорит «linq», я могу только предположить, что она говорит о Linq-to-Sql. Во-вторых, я готов всеми возможными способами проверить эту теорию.

Ответы [ 5 ]

3 голосов
/ 06 января 2009

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

НО ... вы теряете гибкость с сохраненными процессами. Кроме того, вы запускаете их много, как в более чем 10000 раз в минуту? Если нет, то вы действительно не заметите разницу.

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

1 голос
/ 06 января 2009

Я думаю, что он просит не методологию регистрации времени, а скорее некоторые реалистичные, действительные тесты для запуска в качестве сохраненного процесса против Linq.

1 голос
/ 06 января 2009

Я обычно создаю переменную для этого. Пример:

Declare @Start DateTime
Set @Start = GetDate()

Exec YourStoredProcedureHere

Select DateDiff(Millisecond, @Start, GetDate())
0 голосов
/ 06 января 2009

Аргумент, что «хранимый процесс намного быстрее, чем LINQ», немного нечеткий. Речь идет о запуске одной хранимой процедуры или нескольких хранимых процедур с использованием одного и того же соединения с базой данных? Мы говорим об использовании курсоров или транзакций? Некоторые подробности будут очень полезны.

Насколько я понимаю, LINQ to SQL полезен для работы с данными, которые были возвращены вашему приложению с сервера базы данных, или для подачи команд на сервер базы данных с использованием более синтаксического синтаксиса SQL. Тип и количество операций, вероятно, будут иметь существенное влияние на производительность одной операции против другой.

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

Как я уже сказал, требуется уточнение.

РЕДАКТИРОВАТЬ: В своем посте я имею в виду сквозную производительность, а не производительность SQL, который генерирует LINQ, по сравнению с SQL в хранимых процедурах.

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

Вы должны быть в состоянии использовать SQL Profiler , чтобы отслеживать оба запроса и видеть различия. Используя этот метод, вы синхронизируете время в одном и том же месте, а не пытаетесь сравнивать время TSql с чем-то в C # для вашего запроса LINQ.

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