SqlServer統計MVC各アクションの対応時間


1.MonitorActionテーブルの作成
CREATE TABLE [dbo].[MonitorAction](
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[HttpMethod] [varchar](10) NOT NULL,
	[AreaName] [varchar](50) NULL,
	[ControllerName] [varchar](70) NOT NULL,
	[ActionName] [varchar](70) NOT NULL,
	[ActionDescription] [nvarchar](50) NULL,
	[IsDeleted] [bit] NOT NULL,
	[CreatedUserId] [varchar](50) NOT NULL,
	[CreatedTime] [datetime2](7) NOT NULL,
	[LastUpdatedTime] [datetime2](7) NOT NULL,
	[LastUpdatedUserId] [varchar](50) NOT NULL,
	[MaxExecutedMillisecond] [bigint] NULL,
	[MinExecutedMillisecond] [bigint] NULL,
	[AvgExecutedMillisecond] [bigint] NULL,
	[ExecutedTime] [bigint] NULL,
	[Remark] [nvarchar](100) NULL,
 CONSTRAINT [PK_MonitorAction] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[MonitorAction] ADD  CONSTRAINT [DF_MonitorAction_IsDeleted]  DEFAULT ((0)) FOR [IsDeleted]
GO

ALTER TABLE [dbo].[MonitorAction] ADD  CONSTRAINT [DF_MonitorAction_CreatedUserId]  DEFAULT ('System') FOR [CreatedUserId]
GO

ALTER TABLE [dbo].[MonitorAction] ADD  CONSTRAINT [DF_MonitorAction_CreatedTime]  DEFAULT (getdate()) FOR [CreatedTime]
GO

ALTER TABLE [dbo].[MonitorAction] ADD  CONSTRAINT [DF_MonitorAction_LastUpdatedTime]  DEFAULT (getdate()) FOR [LastUpdatedTime]
GO

ALTER TABLE [dbo].[MonitorAction] ADD  CONSTRAINT [DF_MonitorAction_LastUpdatedUserId]  DEFAULT ('System') FOR [LastUpdatedUserId]
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'   ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'Id'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'      HTTP    ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'HttpMethod'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Area  ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'AreaName'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Controller  ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'ControllerName'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Action  ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'ActionName'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Action  ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'ActionDescription'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'    ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'IsDeleted'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'   (  )' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'CreatedUserId'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'    (           )' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'CreatedTime'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'      ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'LastUpdatedTime'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'     (  )' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'LastUpdatedUserId'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'      ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'MaxExecutedMillisecond'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'      ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'MinExecutedMillisecond'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'      ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'AvgExecutedMillisecond'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'     ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'ExecutedTime'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'  ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction', @level2type=N'COLUMN',@level2name=N'Remark'
GO

EXEC sys.sp_addextendedproperty @name=N'Description', @value=N'  Action     ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MonitorAction'
GO



2.Sql文を実行するには、SqlServerタイミングプランで実行することを推奨します.
INSERT INTO MonitorAction 
(
	HttpMethod,AreaName,ControllerName,ActionName,ActionDescription
	,MaxExecutedMillisecond,MinExecutedMillisecond,AvgExecutedMillisecond,ExecutedTime
	,Remark
)

SELECT HttpMethod,AreaName,ControllerName,ActionName,max(ActionDescription) ActionDescription
,max(ExecutingTimeSpan) MaxExecutedMillisecond, min(ExecutingTimeSpan) MinExecutedMillisecond
,AVG(ExecutingTimeSpan) AvgExecutedMillisecond,count(*) ExecutedTime,'    :SqlServer    '
FROM LogActionRenderTime 
GROUP BY  HttpMethod,AreaName,ControllerName,ActionName 
order by ControllerName,ActionName

-- select * from MonitorAction
-- truncate table MonitorAction