Прежде всего, как говорили многие другие, несколько миллионов строк невелики.
В текущем приложении, над которым я работаю, есть несколько таблиц, в которых более ста миллионов строк, и все они нормализованы.
Мы страдали от некоторой низкой производительности, но это было вызвано использованием настроек статистики таблицы по умолчанию. Вставка небольшого количества записей по отношению к общему размеру таблицы, то есть вставка миллиона записей в таблицу, содержащую более 100 миллионов записей, не вызывала автоматического обновления статистики таблицы, поэтому мы получили плохие планы запросов, которые проявились как последовательные запросы вместо параллельных.
От того, будет ли это правильное решение о денормализации, зависит от вашей схемы. Должны ли вы регулярно выполнять глубокие запросы, т. Е. Множество соединений, чтобы получить данные, к которым вам регулярно нужен доступ, если это так, то частичная денормация может стать выходом из положения.
НО НЕ ДО вы проверили свои стратегии индексирования и статистики таблиц.
Убедитесь, что вы используете разумные, хорошо структурированные запросы и что ваши объединения правильно сформированы. Проверьте планы запросов, чтобы ваши запросы действительно обрабатывались так, как вы ожидаете.
Как уже говорили другие, SQL Profiler / Database Engine Tuning Advisor действительно хорошо справляются с этой задачей.
Для меня денормализация обычно находится внизу моего списка дел.
Если проблемы не устранены, проверьте настройки программного и аппаратного обеспечения сервера.
- Ваша база данных и файлы журналов включены
отдельные физические диски с использованием
отдельные контроллеры?
- Есть ли у него
достаточно памяти?
- Установлен ли файл журнала
автогроу? Если это так, то автогров
предел до низкого уровня, т.е.
часто.