Создать историческую таблицу аудита

В настоящее время у нас есть таблица AuditLog, которая содержит более 11 миллионов записей. Независимо от индексов и статистики любой запрос, ссылающийся на эту таблицу, занимает много времени. Большинство отчетов не проверяют записи аудита за прошедший год, но мы все равно хотели бы сохранить эти записи. Какой лучший способ справиться с этим?

Я думал о том, чтобы сохранить таблицу AuditLog для хранения всех записей, которые меньше или равны годам. Затем переместите все записи старше года в таблицу AuditLogHistory. Может быть, просто запускать пакетный файл каждую ночь, чтобы переместить эти записи, а затем обновить индексы и статистику таблицы AuditLog. Это хороший способ выполнить эту задачу? Или каким другим способом я должен хранить старые записи?

Записи, возвращенные из таблицы AuditLog, попадают на связанный сервер и проверяют 6 разных БД, чтобы увидеть, существует ли в них определенный член в зависимости от условия. У меня нет доступа для внесения каких-либо изменений в базы данных связанных серверов, поэтому я могу оптимизировать только то, что у меня есть, а именно Auditlog. Попадание в базу данных связанного сервера потребляет более 90% стоимости запросов. Так что я просто пытаюсь ограничить то, что могу.

1 ответ

Во-первых, мне трудно поверить, что вы не можете оптимизировать запрос к таблице с 11 миллионами записей. Вам следует изучить имеющиеся у вас индексы относительно часто выполняемых запросов.

В любом случае ответом на ваш вопрос является "разбиение". Вы должны разбить столбец по дате и обязательно включить это условие во все запросы. Это уменьшит объем данных и, возможно, ускорит обработку.

Документация - хорошее место, чтобы начать изучать разделение.

Другие вопросы по тегам