Насколько интенсивным должен быть процессор, чтобы запросить репутацию пользователя, прежде чем стоило бы постепенно отслеживать его с помощью собственного столбца?
На самом деле есть два вопросаздесь под видом одного: (1) это изменение улучшит производительность и (2) будет ли улучшение производительности стоить усилий?
Что касается улучшения производительности, это в основном стандартАнализ плюсов / минусов.
Преимущества нормализации в основном двояки:
Упрощенная целостность данных
Нет проблемс пересчетом (например, если базовые данные изменяются, производный столбец необходимо пересчитать).
Если вы покрываете целостность данных с помощью надежно реализованного решения (например, триггер,Изменения данных только для Sstored-proc с отзывом прямых разрешений на изменение таблиц и т. Д.), А затем это становится прямым вычислением того, стоит лиизменение данных требует повторного расчета производных данных по сравнению с повторным вычислением полученных данных каждый раз.(ПРИМЕЧАНИЕ. Другой подход к сохранению целостности данных заключается в том, чтобы принудительно пересчитывать производные данные по расписанию, когда эти данные могут быть неточными с некоторым временным отклонением. StackExchange использует этот подход с некоторыми из своих чисел).
В типичном сценарии (гораздо больше поиска данных и гораздо меньше изменений в базовых данных) математика довольно явно искажается в пользу сохранения в таблице денормализованных производных данных.
В некоторых редких случаях, когда базовые данные изменяются ОЧЕНЬ часто, но производные данные не извлекаются так часто, что может быть вредно.
Теперь мы находимся в гораздо болееважный вопрос: Стоит ли улучшение производительности?
Обратите внимание, что, как и во ВСЕХ оптимизациях, самый большой вопрос - "стоит ли вообще оптимизация?", икак таковой, является предметом двух основных соображений:
Измерение точной разницы производительности и в целом профилирования.
Контекст этой конкретной оптимизации в целомизображение вашей системы.
Например, если разница в производительности запроса - , которая, как всегда, при оптимизации должна сначала измеряться - составляет 2% между кэшированными производными данными и вычисленнымиВо-первых, дополнительная сложность системы в реализации столбца кэша репутации может не стоить этого в первую очередь.Но какой порог между заботой и не заботой в том, что незначительные улучшения зависят от общей картины вашего приложения.Если вы можете предпринять шаги для повышения производительности запросов на 10% в другом месте, сконцентрируйтесь на этом против 2%.Если вы Google, и дополнительные 2% производительности запросов сопряжены с дополнительными аппаратными средствами в размере 2 миллиардов долларов, их нужно оптимизировать в любом случае.