Проблемы фрагментации SQL Server

У меня есть несколько таблиц (Пользователь & UserRecord) в моей базе данных, которые сильно фрагментированы (например, 99%) и приводят к остановке всей базы данных и, следовательно, веб-сайта.

UserRecord является своего рода снимком этого пользователя в определенный момент времени. Пользователь похож на основную запись для этого пользователя. Пользователь имеет 0 для многих UserRecords. У пользователя около миллиона строк, у UserRecord около 2,5 миллиона. Эти таблицы пишутся много. Oни'также много разыскивается. Oни'оба станут намного больше. Главные индексы, которые становятся плохо фрагментированными, являются первичными ключами таблиц User и UserRecord.

БД - это SQL Server 2012 и яя использую Entity Framework и яЯ не использую хранимые процедуры.

Таблицы выглядят примерно так:

USER
UserName string PK ClusteredIndex
FirstName string
LastName string
+SeveralMoreRows

USER_RECORD
UserRecordId int PK ClusteredIndex
ListId int FK(List)
UserName string FK(User) NonClusteredIndex
Community string NonClusteredIndex
DateCreated datetime
+LotsMoreRows

LIST 
ListId int PK & ClusteredIndex
Name string
DateCreated datetime

(не уверен, если список это важно или нет, но я думал, чтовключить его как естьсвязанные с User_Record. Список имеет 0 для многих UserRecords)

Мы'Мы устанавливаем план обслуживания SQL для ежедневного перестроения индексов, что помогает, но иногда этого недостаточно.

Друг предложил нам использовать две базы данных: одну для чтения, другую для записи, и мы синхронизируем базу данных чтения из базы данных записи. Не то чтобы я что-то знал об этом, но первая проблема, которую я вижу с этим решением, заключается в том, что нам нужны обновленные данные при просмотре сайта. Например, если мы обновляем данные пользователя или UserRecord, мы хотим сразу увидеть эти изменения.

Кто-нибудь есть какие-либо предложения о том, как я могу решить эту проблему, прежде чем она выходит из-под контроля?

Ответы на вопрос(1)

Ваш ответ на вопрос