несколько соединений против отдельных кэшированных запросов? - PullRequest
0 голосов
/ 20 ноября 2010

Я видел похожие вопросы по одному сложному соединению против нескольких запросов, и в этом случае ответы всегда были «все зависит», ха-ха, но мне было интересно, смогу ли я получить информацию о направлении.Надеюсь, это не будет слишком сложно объяснить.

Я показываю страницу, на которой нужно взять информацию из 3-4 разных таблиц.Допустим, у нас есть человек, который может принадлежать к клубу, и в этом клубе много мероприятий.Мне нужно было бы собрать информацию из клуба, человека, информацию о событии и т. Д.

Сейчас у меня они есть в 3-4 отдельных таблицах, но в моей таблице событий есть большое количество столбцов, которые я 'Я уверен, что это не нормализовано, но я продолжаю в том же духе, так что мне не нужно делать больше 3-5 соединений максимум.Сейчас, кажется, все в порядке с небольшим набором данных, но я не могу не задаться вопросом, будет ли разделение их на 3-4 отдельных запроса с последующим ускорением кэширования результатов некоторых из них?Таблица событий обновляется довольно часто, поэтому я вижу, что она аннулирована, но организация и таблица пользователей этого не делают, поэтому я вижу, что последнее решение выигрывает.Итак, что бы вы порекомендовали?

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

1 Ответ

1 голос
/ 20 ноября 2010

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

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

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

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

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

...