Какое влияние окажет денормализация на запросы, объединения и время ответа? - PullRequest
3 голосов
/ 15 июня 2009

Прежде чем денормализовать, мне интересно, как это повлияет на следующее:

  • Время ответа на запрос
  • Ширина строк в базе данных
  • Соединения, необходимые для результата
  • Количество запросов, необходимых для выполнения запросов

Кажется, если я не ошибаюсь, все это будет уменьшено ?

Ответы [ 5 ]

2 голосов
/ 16 июня 2009

Если вы работаете в Microsoft SQL Server, я настоятельно рекомендую нормализовать ваши таблицы и использовать так называемые индексированные представления для денормализации. Это полупостоянные структуры данных, которые обновляются всякий раз, когда обновляются базовые таблицы. Таким образом, вы сохраняете лучшее из обоих миров - нормализованную схему и быстрые денормализованные данные!

Нечто подобное может существовать и для Oracle, не уверен.

2 голосов
/ 16 июня 2009

Не увеличится ли ширина строк в базе данных?

Денормализация должна выполняться только в качестве крайней меры.

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

2 голосов
/ 16 июня 2009

Ваши предположения верны. Денормализация увеличит производительность, но недостатком является то, что она снижает корректность.

Эта тема подробно обсуждалась в предыдущем stackoverflow вопрос

1 голос
/ 16 июня 2009

Кроме «с рядами в базе данных», все ваши ответы верны.

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

Но самое главное: вы не задали все вопросы.

Вас также интересует, намеренно ли вы вводите в свою базу данных реденсанс, не должны ли вы одновременно вводить дополнительные ограничения базы данных, чтобы предотвратить в вашей базе данных поврежденные данные (данные, которые противоречат самим себе)?

И если ответ на этот вопрос «да», то, возможно, вам следует также спросить себя, не приведет ли вас к тому, чтобы принудительное выполнение всех тех дополнительных ограничений, которые необходимы только потому, что вы ввели повторный брак, повлекло за собой подобное (или очень серьезное) ) потеря производительности обновления.

0 голосов
/ 16 июня 2009

Денормализация - довольно широкий термин, поэтому нет быстрого ответа на ваш вопрос.

Там, где вы избегаете объединения, скорее всего, будет быстрее восстановить. Однако вы добавляете к сложности обновления и обслуживание данных, так что есть компромисс.

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

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