что лучше, создать материализованное представление или новую таблицу? - PullRequest
2 голосов
/ 25 мая 2010

У меня есть требовательных запросов mysql, которые должны выбрать те же часто обновляемые наборы данных из 5-7 таблиц mysql. Операция выбора будет немного больше, чем CUD.

Я подумываю о создании таблицы или материализованного представления для сбора всех требовательных столбцов из других таблиц, чтобы сократить общее время запросов для разных таблиц и, таким образом, повысить производительность.

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

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

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

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

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

Представления - это не что иное, как запрос.Поэтому не имеет значения, делаете ли вы запрос для выбора из представления или просто выполняете простой sql - производительность будет одинаковой.

как кешировать

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

0 голосов
/ 25 мая 2010

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

Что касается ваших конкретных вопросов, подделка материализованного представления с помощью запросов может или не может помочь вам. Скорее всего, это снизит производительность вставки и обновления и, возможно, увеличит выбранную производительность. Создание «представления» по требованию, когда это необходимо, ничего не сделает для вас, так как вам все равно придется выполнить медленный запрос, чтобы создать его. Поскольку MySQL напрямую не поддерживает материализованные представления, стандартное представление ничего не сделает для вас.

Без более подробной информации лучше помочь невозможно.

0 голосов
/ 25 мая 2010

Мне кажется, что вы думаете в соответствии с концепцией " материализованного ".

Mysql не обеспечивает реализацию этого, хотя он может быть смоделирован с некоторой более или менее изощренностью (я делаю что-то подобное позже в Postgresql - это удобно для сложных непараметрические запросы, которые часто используются в отчетах и ​​для которых допустимо не иметь полностью актуальных данных).

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