Я знаю, что нам крайне необходима стратегия обслуживания БД.
+ 1 для определения, что нужно
Насколько я знаю, я студент колледжа, работаю неполный рабочий день в этой компании
Продолжай учиться, набирайся опыта, а пока найди опытного консультанта.
Таблица заполнена 24 рабочими, работающими по 4 потока в каждом
Полагаю, это довольно важно для работы в течение рабочего дня, а простои - плохая новость? Если это так, не стоит с этим связываться.
Существует кластеризованный индекс для ResultID и Fieldname
Является ли ResultID первым столбцом в PK, как вы указываете?
Если так, то я держу пари, что он недостаточно избирателен и, в зависимости от потребностей запросов, порядок полей PK следует менять местами (несмотря на то, что этот составной ключ выглядит плохим выбором для кластеризованного PK)
Каков результат:
ВЫБРАТЬ СЧЕТЧИК (*), СЧЕТЧИК (ОТЛИЧИТЕЛЬНЫЙ ResultID) ОТ MyTable
Если первое число, скажем, в 4 раза больше, чем второе, или больше, вы, скорее всего, будете получать сканы в предпочтении к поиску из-за низкой избирательности ResultsID, а некоторые простые изменения приведут к огромной производительности улучшения.
Кроме того, имя поля довольно широкое (50 символов), поэтому к любым вторичным индексам будет добавлено 50 + 4 байта к каждой записи индекса. Поля действительно CHAR, а не VARCHAR?
Лично я бы рассмотрел увеличение плотности листовых страниц. На 90% вы оставите только несколько пробелов - возможно, один на страницу. Но при большой таблице из 500 миллионов строк более высокая плотность упаковки может означать меньшее количество уровней в дереве и, следовательно, меньше запросов на поиск. Напротив, почти каждая вставка для данной страницы потребует разбиения страницы. Это предпочло бы вставки, которые кластеризованы, поэтому могут не подходить (учитывая, что ваши данные вставки, вероятно, не кластеризованы). Как и во многих других случаях, вам необходимо выполнить тест, чтобы определить, какая плотность ключей индекса работает лучше всего. В SQL Server есть инструменты, помогающие проанализировать, как анализируются запросы, кэшируются ли они, сколько сканирований вызываемой ими таблицы, какие запросы выполняются «медленно» и т. Д.
Пригласите консультанта посмотреть и дать вам несколько советов. Это не вопрос, ответы на который приведут здесь, чтобы дать вам безопасное решение для реализации.
Вам действительно ДЕЙСТВИТЕЛЬНО нужно тщательно продумать правила обслуживания таблиц, содержащих 500 миллионов строк и ежедневно загружаемых вставок. Извините, но я испытываю огромное разочарование по поводу компаний, попавших в это состояние.
Таблица нуждается в дефрагментации (если у вас нет кластеризованного индекса, вариантов станет меньше, поэтому сохраняйте их, пока не решите, что есть лучший кандидат). «Онлайн» методы дефрагментации будут иметь скромное влияние на производительность и могут пускаться в пух и прах - и их можно будет безопасно прервать, если они превысят ограничения времени / ЦП [хотя это, скорее всего, потребует некоторого программирования]. Если у вас есть «тихий» слот, используйте его для дефрагментации таблиц и обновления статистики по индексам. Не ждите до выходных, чтобы попытаться сделать все столы за один раз - делайте как можно больше / больше в любое тихое время суток (предположительно ночью).
Дефрагментация таблиц может привести к значительному увеличению использования журнала транзакций, поэтому убедитесь, что резервные копии любых TLog-файлов выполняются часто (у нас есть 10-минутная политика резервного копирования TLog, которую мы увеличиваем до каждой минуты во время дефрагментации таблицы, чтобы процесс дефрагментации не становится определением необходимого пространства Tlog!)