Каковы стратегии для достижения производительности как для чтения, так и для записи на Sql Server? - PullRequest
2 голосов
/ 21 января 2010

Я новичок, как здесь, при переполнении стека, так и на сервере SQL, поэтому, пожалуйста, дайте мне знать, если этот вопрос не подходит в любом случае:)

Что ж, я разрабатываю веб-приложение, которое будет использоваться для анализа больших объемов данных, которые хранятся в базе данных SQL Server 2008. Интерфейс не позволит пользователям обновлять или вставлять какие-либо данные, поэтому, за исключением некоторых обновлений пользовательских данных, в БД будут отправляться в основном команды SELECT.

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

Я создал соответствующие индексы для достижения хорошей производительности на SELECTS, но эти индексы приводят к медленному ночному обновлению. Мне нужен «лучший из двух миров», поэтому я погуглил и обнаружил, что общей стратегией является удаление / отключение всех индексов перед записью данных и их повторное создание после этого. Я также слышал, что лучшим подходом является ограничение фактора заполнения индексов, что избавило бы меня от написания скриптов для удаления и повторного создания индексов.

Как вы думаете, какой подход лучше использовать здесь, моя главная цель - хорошая производительность? Должен ли я пойти с подходом "fillfactor" или я должен испачкаться и написать сценарии для удаления / повторного создания индексов? Любые предложения приветствуются!

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Пропуск / повторное создание индексов ночью поможет. Коэффициент заполнения дает преимущество только в том случае, если уровень вставки / обновления вызывает фрагментацию. Вы можете проверить это, запустив DBCC SHOWCONTIG (внимательно относитесь к работе и если БД велика).

0 голосов
/ 21 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...