У меня есть проект, который генерирует снимки базы данных, преобразует ее в XML, а затем сохраняет XML в отдельной базе данных.К сожалению, эти снимки становятся огромными файлами, и теперь их размер составляет около 10 мегабайт каждый.К счастью, мне нужно хранить их только около месяца, прежде чем их можно будет снова удалить, но, тем не менее, месяц снимков оказывается очень плохим из-за его производительности ...Я думаю, что есть способ улучшить производительность.Нет, не храня XML в отдельной папке где-то, потому что у меня нет прав на запись в любое место на этом сервере.XML должен оставаться в базе данных.Но каким-то образом поле [Content] может быть как-то оптимизировано, чтобы все ускорилось ...Мне не нужны никакие опции полнотекстового поиска в этом поле.Я никогда не буду искать по этому полю.Так что, возможно, отключив это поле для инструкций поиска или что-то еще?Таблица не имеет ссылок на другие таблицы, но структура является фиксированной.Я не могу переименовать вещи или изменить типы полей.Поэтому мне интересно, возможна ли оптимизация.Ну так что?Структура, сгенерированная SQL Server:
CREATE TABLE [dbo].[Snapshots](
[Identity] [int] IDENTITY(1,1) NOT NULL,
[Header] [varchar](64) NOT NULL,
[Machine] [varchar](64) NOT NULL,
[User] [varchar](64) NOT NULL,
[Timestamp] [datetime] NOT NULL,
[Comment] [text] NOT NULL,
[Content] [text] NOT NULL,
CONSTRAINT [PK_SnapshotLog]
PRIMARY KEY CLUSTERED ([Identity] ASC)
WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON,
FILLFACTOR = 90) ON [PRIMARY],
CONSTRAINT [IX_SnapshotLog_Header]
UNIQUE NONCLUSTERED ([Header] ASC)
WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON,
FILLFACTOR = 90)
ON [PRIMARY],
CONSTRAINT [IX_SnapshotLog_Timestamp]
UNIQUE NONCLUSTERED ([Timestamp] ASC)
WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON,
FILLFACTOR = 90)
ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Производительность не только низкая при выборе данных из этой таблицы, но также при выборе или вставке данных в одну из других таблиц в этой базе данных!Когда я удаляю все записи из этой таблицы, вся система работает быстро.Когда я начинаю добавлять снимки, производительность начинает снижаться.Приблизительно после 30 снимков производительность ухудшается, и риск превышения времени ожидания соединения увеличивается.Возможно, проблема не в самой базе данных, хотя она все еще медленная, когда используется через инструмент управления.(Быстро, когда моментальные снимки пусты.) В основном я использую ASP.NET 3.5 и Entity Framework для подключения к этой базе данных, а затем для чтения нескольких таблиц.Может быть, здесь можно добиться некоторой производительности, хотя это не объясняет, почему база данных также медленно работает с инструментами управления и при использовании через другие приложения с прямым подключением ...