Мускулистым!

malls
На сайте с 08.08.2005
Offline
255
885

:) решил опробовать "новые" форумные технологии (см. опрос)

Вопрос такой - выгодно ли разделять статику и динамику в мускульных таблицах или пофиг?

Так например имеем таблицу (большую) вида:

id / text

хранящую соответственно статичные тексты.

Хотим приютить туда счетчик просмотров. Как лучше сделать:

id / text / count

или сделать отдельную таблицу

id / count

Выгодно ли разделять статику и динамику в MySQL таблицах

Да! [мухи отдельно, котлеты отдельно!]
44% (11)
Нет! [котлеты мух не портят!]
32% (8)
Ахтунг! [вы о чем вообще?]
24% (6)
Всего проголосовало: 25
Dreammaker
На сайте с 20.04.2006
Offline
569
#1
malls:
id / text / count

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

[Удален]
#2

сейчас будет очередной холивар между любителями наормализованных баз даных и денормализованных :))

надеемся подскачут 1сними со своей 6ой нормальной формой :-D

BB
На сайте с 16.09.2009
Offline
6
#3
malls:

или сделать отдельную таблицу
id / count

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

Продам скрипт (CMS) доски объявлений (/ru/forum/399149) утилиты для рутинной работы (/ru/forum/429322) верстка, натяжка, доработка (/ru/forum/429323)
[Удален]
#4
BigBoard:
вы на связке время потеряете, поэтому однозначно нет

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

[Удален]
#5
BigBoard:
вы на связке время потеряете, поэтому однозначно нет, если динамика большая, то можно потерять скорость генерации страницы (апдейт блокирует таблицу).. поэтому, можно сделать кеш секунд на пять.

блокировка всей таблицы ТОЛЬКО в случае myisam таблиц. у них есть минусы и плюсы, кстати да, если слишком большие таблицы, то статичную можн осделать myisam раз он редко обновляется, а выборки из таких таблиц на 15-30% быстрее чем из innodb, а таблицу счетчик - innodb :)

если расставить нормально индексы то даже кеш тут не понадобится)

N
На сайте с 06.05.2007
Offline
419
#6

Из-за особенностей выполнения запросов с полями text, считается что нужно разделять. То есть нужно две таблицы (id, count, всякие нужные индексируемые данные ) и (id/ text / всякие "ненужные" не индексируемые данные).

Счетчик просмотров, кстати, выгодно делать так :

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

Кнопка вызова админа ()
RO
На сайте с 13.07.2009
Offline
88
#7

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

id|text|count - тут в коунт просто добавляю одно значение при просмотре

id|count - а тут записываю какой браузер и каким ип и в какое время просмотрел

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

N
На сайте с 06.05.2007
Offline
419
#8

RedOK, поисковая оптимизация - процесс медленный и растянутый во времени. можно смотреть в текущие отстающие максимум на час данные и не париться.

DeveloperRu
На сайте с 27.02.2009
Offline
72
#9

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

да еще и не забыть надо, когда таблицы можно объединять, а когда не стоит.. имхо - это лишняя морока

Ответы на вопросы (http://telenok.com)
K
На сайте с 29.04.2008
Offline
74
#10

если нужна подробная статистика как например написал RedOK то лучше разделить.. а так в принципе не обязательно...

лишних запросов все равно не будет.. какая разница какую таблицу апдейтить при просмотре...

Open Source Danneo CMS (http://nafn.ru)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий