2010-10-05 2 views
6

У меня есть база данных SQL Server 2005. Я регистрирую данные в таблице. Я хочу, чтобы данные таблицы не становились слишком большими.Как ограничить размер таблицы?

Как я могу ограничить размер таблицы числом х строк и вести журнал? Я хочу, чтобы самые старые строки упали.

ответ

8

Вы должны сами создать этот процесс. Возможно, вы захотите изучить задачу SQL Server, которая выполняет инструкцию SQL DELETE, основанную на определенных вами критериях.

+1

Работа, вероятно, лучше, чем спусковой крючок, если вы не возражаете против того, чтобы все закончилось. Просто установите его для запуска один раз в ночное время или еженедельно или что угодно. –

3

Это пример, когда триггеры могут быть хорошей идеей на Sql Server. (Мое личное чувство состоит в том, что триггеры в SQL похожи на GOTO в коде.)

Просто напишите триггер INSERT, который при запуске проверяет количество строк в файле и выполняет DELETE в соответствии с любыми правилами, которые вы указываете ,

Вот ссылка на trigger basics. И another, на этот раз с крышками экрана.

+1

Если таблица, о которой идет речь, часто меняется, то это не будет хорошей идеей. Как правило, гораздо лучше планировать техобслуживание пунктов, когда система находится под наименьшим количеством нагрузки. – NotMe

+0

Если вы идете по этому маршруту, вы должны оценить производительность. С триггерами и большими объемами данных инструкция INSERT займет намного больше времени. И вы должны ожидать сбоев в процессе удаления. Вы должны решить, важно ли пропустить вставку, потому что сбой триггера. – bobs

2

Поместите стол в свою собственную файловую группу. Ограничьте размер файловой группы. См:

Затем добавить задание, которое удаляет старые записи журнала, но это, как правило, сложнее, чем это кажется. Самый эффективный способ использования скользящего окна: How to Implement an Automatic Sliding Window in a Partitioned Table. Если это невозможно, то лучше всего убедиться, что кластеризованный ключ в таблице - это дата, так что удаленные файлы могут эффективно удалять старые строки.

0

Если вы хотите ограничить размер таблицы для ведения журнала, я бы не советовал думать о решении проблемы, ограничив количество записей, хранящихся в таблице. Вместо этого у вас есть архив или процесс очистки для таблицы, в которой хранятся журналы, этот процесс может быть настроен для очистки или архивирования журналов либо после того, как будет достигнуто количество строк, либо, возможно, позже вы захотите переконфигурировать его после X числа мин./ч/и т.д.. Если вас беспокоит реальное пространство, тогда было бы лучше проанализировать, сколько места занимают ваши журналы. Как только у вас появится представление о том, какое физическое пространство у вас доступно для базы данных, затем ограничите рост данных с SQL Server, чтобы убедиться, что файл данных, который хранится в информации о регистрации, не превышает ваших ожиданий.

Смежные вопросы