Я ищу советы. У меня есть таблица SQL Server, называемая AuditLog
, и эта таблица записывает любые действия/изменения, которые происходят с нашей БД из нашего веб-приложения.Медленное извлечение данных из таблицы 38GB SQL.
Я пытаюсь создать несколько отчетов, и в любое время, когда я пытаюсь извлечь данные из этой таблицы, мой запрос запускается от секунд до 10 минут +. Только что делает
select * from dbo.auditlog
занимает около 2 часов +.
В таблице содержится 77 миллионов строк и растет. Во всяком случае, только мысли в этот момент - делать индекс, но это замедляет вставки. Не уверен, насколько это повлияет на производительность, но сдерживается. Другие мысли заключались в разделении таблицы или представлении индекса, но мы используем SQL Server 2014 Standard Edition, и эти параметры не поддерживаются.
Вот таблица создать заявление:
CREATE TABLE [dbo].[AuditLog]
(
[AuditLogId] [uniqueidentifier] NOT NULL,
[UserId] [uniqueidentifier] NULL,
[EventDateUtc] [datetime] NOT NULL,
[EventType] [char](1) NOT NULL,
[TableName] [nvarchar](100) NOT NULL,
[RecordId] [nvarchar](100) NOT NULL,
[ColumnName] [nvarchar](100) NOT NULL,
[OriginalValue] [nvarchar](max) NULL,
[NewValue] [nvarchar](max) NULL,
[Rams1RecordID] [uniqueidentifier] NULL,
[Rams1AuditHistoryID] [uniqueidentifier] NULL,
[Rams1UserID] [uniqueidentifier] NULL,
[CreatedBy] [uniqueidentifier] NULL,
[CreatedDate] [datetime] NULL DEFAULT (getdate()),
[OriginalValueNiceName] [nvarchar](100) NULL,
[NewValueNiceName] [nvarchar](100) NULL,
CONSTRAINT [PK_AuditLog]
PRIMARY KEY CLUSTERED ([TableName] ASC, [RecordId] ASC, [AuditLogId] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[AuditLog] WITH NOCHECK
ADD CONSTRAINT [FK_AuditLog_User]
FOREIGN KEY([UserId]) REFERENCES [dbo].[User] ([UserID])
GO
ALTER TABLE [dbo].[AuditLog] CHECK CONSTRAINT [FK_AuditLog_User]
GO
ALTER TABLE [dbo].[AuditLog] WITH NOCHECK
ADD CONSTRAINT [FK_AuditLog_UserCreatedBy]
FOREIGN KEY([CreatedBy]) REFERENCES [dbo].[User] ([UserID])
GO
ALTER TABLE [dbo].[AuditLog] CHECK CONSTRAINT [FK_AuditLog_UserCreatedBy]
GO
Похоже, вам нужны некоторые индексы - см. Http://basitaalishan.com/2013/03/13/find-missing-indexes-using-sql-servers-index-related-dmvs/ –
Я вижу, t есть любые столбцы IDENTITY. Это означает, что вставки являются односторонними к базе данных, а не наоборот, чтобы получить выданный ключ. Это означает, что крошечное ухудшение производительности, которое дополнительные клавиши будут использовать при вставках, не повлияет на время отклика и общую производительность сервера баз данных, если ваш сервер уже не работает на полную мощность. Работает ли он на полную мощность? –
Нет. Сервер БД почти не работает. – user2262706