2009-07-17 1 views
0

Мне нужно создать базу данных для хранения данных журнала, но у меня нет опыта. Моя таблица содержит около 19 столбцов (около 500 байт в каждой строке), а ежедневно растет до 30 000 новых строк. Мое приложение должно иметь возможность снова запросить эту таблицу снова.Как создать базу данных?

Я использую SQL Server 2005.

Как я могу разработать эту базу данных?

EDIT: данные, которые я хочу хранить, содержат много типов: datetime, string, short и int. Ячейки NULL составляют около 25% в целом :)

+6

Возможно, вы должны добавить более подробную информацию о своих данных, если хотите получить твердый совет. – CodeFusionMobile

ответ

0

Ну, учитывая приведенное вами описание, все, что вы действительно можете сделать, это обеспечить нормализацию ваших данных и то, что ваши 19 столбцов не приведут вас к «разреженным», table (что означает, что большое количество этих столбцов равно null).

Если вы хотите добавить еще несколько данных (возможно, существующую схему и некоторые данные примера), я могу предложить более конкретные советы.

0

Бросьте указатель на каждый столбец, на который вы будете отвечать.

Огромные количества тестовых данных и планы выполнения (с анализатором запросов) являются вашим другом здесь.

+1

Я бы дождался этого. Я не говорю «не делай этого», но добавление 30 тыс. Записей в день означает, что ненужные индексы могут негативно повлиять на производительность. Поэтому вам нужно уделять особое внимание «вы будете опросить». Вы действительно не знаете этого, пока не используете его какое-то время. ** Профиль ** первый. –

0

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

В качестве альтернативы вы можете протестировать его с помощью профилировщика и посмотреть, что предлагает профайлер с точки зрения индексации на основе фактического использования.

0

Некоторые оптимизаций вы могли бы сделать:

  1. кластера данные, основанные на наиболее вероятных просмотровых критериев (например, кластерный первичный ключ для каждой строки создания дата-время будет сделать внешний вид окна этой природы очень быстро).
  2. Предполагая, что строки записываются по одному (не в пакетном режиме) и что каждая строка вставлена, но никогда не обновляется, вы можете закодировать все операторы select, используя опцию «with (NOLOCK)». Это обеспечит значительное улучшение производительности, если у вас много читателей, поскольку вы полностью обходите систему блокировки. Риск чтения недопустимых данных значительно уменьшается с учетом структуры таблицы.

Если вы можете опубликовать свое определение таблицы, я могу предложить вам больше советов.

1

Однако, что бы вы ни искали, таблица протоколирования почти наверняка имеет столбец временной метки. Сначала вы захотите сгруппировать в эту метку времени, чтобы сохранить эффективные вставки. Это может означать, что вы всегда ограничиваете свои запросы конкретными диапазонами дат, так что селективность в вашем кластерном индексе хороша.

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