Подтвердить что ты не робот

Как сохранить результаты MVC MiniProfiler

Я хочу сохранить результаты MVC MiniProfiler в базе данных sql-сервера. Я просматриваю страницу mvc4 с высокой нагрузкой, чтобы выявить сложную проблему производительности, которая не воспроизводится в нашей тестовой системе или системе разработки и происходит только периодически на производственном сервере.

Каков наилучший способ подключиться к мини-профилировщику? Есть ли существующее расширение для этого?

4b9b3361

Ответ 1

Я только что настроил MiniProfiler, чтобы сохранить результаты в SQL Azure, это довольно просто. Мы используем MiniProfiler.MVC3, чтобы позаботиться обо всех проводках, как описано .

Таблица create script встроена в сборку со статическим полем SqlServerStorage.TableCreationScript, поэтому вы можете использовать это, но пока копаясь в коде, я обнаружил, что последняя ветвь развития немного улучшила script, добавив некоторые индексы. Структура таблицы в остальном не изменилась, поэтому она по-прежнему работает с последним пакетом, доступным на nuget.

На момент написания вот прямая ссылка в последнюю таблицу create script.

После этого вам нужно только установить MiniProfiler для использования SQL с одной строкой кода:

MiniProfiler.Settings.Storage = new SqlServerStorage("<your connection string>");

Если вы не используете SQL Azure, это, но я нашел одну проблему, когда мы попытались использовать ее в Azure. Я получил следующее исключение (спасибо ELMAH), когда профилирование попыталось сохранить:

System.Data.SqlClient.SqlException

Таблицы без кластерного индекса не поддерживаются в этой версии SQL Server. Создайте кластерный индекс и повторите попытку.

Чтобы решить эту проблему, мне пришлось добавить дополнительный (неиспользуемый) столбец в таблицу MiniProfilers. Вот начало таблицы create script:

create table MiniProfilers
(
    RowId integer not null identity constraint PK_MiniProfilers primary key clustered, -- Need a clustered primary key for SQL azure
    Id    uniqueidentifier not null,
    Name  nvarchar(200) not null,

И поскольку столбец Guid Id больше не является основным ключом, я добавил дополнительный индекс, чтобы гарантировать, что поисковые запросы все еще бывают быстрыми:

create unique nonclustered index IX_MiniProfilers_Id on MiniProfilers (Id)

Надеюсь, что это поможет.


Обновление

Изменение поддержки SQL Azure было предоставлено как Pull Request и принято. Спасибо Jarrod.