Nic*_*ckD 23 asp.net-mvc mvc-mini-profiler
我想将MVC MiniProfiler的结果保存到sql server数据库.我分析了一个高负载的mvc4页面,以发现一个棘手的性能问题,这个问题在我们的测试或开发系统上是不可重现的,只是偶尔在生产服务器上发生.
连接迷你探查器的最佳方法是什么?是否有现成的扩展名?
Jam*_*ing 36
我刚刚设置MiniProfiler将结果保存到SQL Azure,这很容易.我们使用MiniProfiler.MVC3描述照顾所有的接线了这里.
表创建脚本使用SqlServerStorage.TableCreationScript静态字段嵌入到程序集中,因此您可以使用它,但在深入研究代码时,我发现最新的开发分支通过添加一些索引来略微增强了脚本.表结构在其他方面没有变化,因此它仍然适用于nuget上可用的最新包.
在那之后,您唯一需要做的就是设置MiniProfiler以使用单行代码的SQL:
MiniProfiler.Settings.Storage = new SqlServerStorage("<your connection string>");
Run Code Online (Sandbox Code Playgroud)
如果您没有使用SQL Azure,就是这样,但是当我们尝试在Azure中使用它时,我发现了一个问题.当分析尝试保存时,我收到以下异常(谢谢ELMAH):
System.Data.SqlClient.SqlException
此版本的SQL Server不支持没有聚簇索引的表.请创建聚簇索引,然后重试.
为了解决这个问题,我必须在表中添加一个额外的(未使用的)列MiniProfilers.以下是有问题的create table脚本的开头:
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,
Run Code Online (Sandbox Code Playgroud)
由于Guid Id列不再是主键,我添加了一个额外的索引以确保查找仍然很快:
create unique nonclustered index IX_MiniProfilers_Id on MiniProfilers (Id)
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
更新
支持SQL Azure的更改已作为Pull Request提供并已接受.谢谢Jarrod.
| 归档时间: |
|
| 查看次数: |
5879 次 |
| 最近记录: |