- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
:) решил опробовать "новые" форумные технологии (см. опрос)
Вопрос такой - выгодно ли разделять статику и динамику в мускульных таблицах или пофиг?
Так например имеем таблицу (большую) вида:
id / text
хранящую соответственно статичные тексты.
Хотим приютить туда счетчик просмотров. Как лучше сделать:
id / text / count
или сделать отдельную таблицу
id / count
id / text / count
такой вариант в данном случае будет оптимальнее при выборке, если конечно таких дополнительных полей не окажется несколько десятков, а то можно много чего прикрутить к начальной таблице. :)
сейчас будет очередной холивар между любителями наормализованных баз даных и денормализованных :))
надеемся подскачут 1сними со своей 6ой нормальной формой :-D
или сделать отдельную таблицу
id / count
вы на связке время потеряете, поэтому однозначно нет, если динамика большая, то можно потерять скорость генерации страницы (апдейт блокирует таблицу).. поэтому, можно сделать кеш секунд на пять.
вы на связке время потеряете, поэтому однозначно нет
+1, у нас с одним коллегой были похожие задачи, он проектирвал свою бд с отдельной таблицей просмотрров, а я спроэектировал доп полем в таблице, в итоге когда базы вырасли, даже на глаз было заметно, что мои мои запрсы работают быстрее, правда жаль что цифр не знаю точных.
вы на связке время потеряете, поэтому однозначно нет, если динамика большая, то можно потерять скорость генерации страницы (апдейт блокирует таблицу).. поэтому, можно сделать кеш секунд на пять.
блокировка всей таблицы ТОЛЬКО в случае myisam таблиц. у них есть минусы и плюсы, кстати да, если слишком большие таблицы, то статичную можн осделать myisam раз он редко обновляется, а выборки из таких таблиц на 15-30% быстрее чем из innodb, а таблицу счетчик - innodb :)
если расставить нормально индексы то даже кеш тут не понадобится)
Из-за особенностей выполнения запросов с полями text, считается что нужно разделять. То есть нужно две таблицы (id, count, всякие нужные индексируемые данные ) и (id/ text / всякие "ненужные" не индексируемые данные).
Счетчик просмотров, кстати, выгодно делать так :
при просмотре делается неблокирующая вставка в отдельную таблицу и раз в час суммирование и изменение счетчика. Стоит ли говорить, что такой счетчик уже написан в vbulletin ?
получается чтобы сделать отдельную таблицу с просмотрами то и запрос на запись и на вывод будет уже не один, хотя я примерно так и юзаю 2 варианта сразу
id|text|count - тут в коунт просто добавляю одно значение при просмотре
id|count - а тут записываю какой браузер и каким ип и в какое время просмотрел
может смахивает на бред , но все же люблю смотреть какие тексты сегодня читал гугл и ему подобные.
RedOK, поисковая оптимизация - процесс медленный и растянутый во времени. можно смотреть в текущие отстающие максимум на час данные и не париться.
нужно понять, что разделение впоследствии вызовет джоины и прочие неприятные вещи, которые никак не меньше отнимут ресурсов
да еще и не забыть надо, когда таблицы можно объединять, а когда не стоит.. имхо - это лишняя морока
если нужна подробная статистика как например написал RedOK то лучше разделить.. а так в принципе не обязательно...
лишних запросов все равно не будет.. какая разница какую таблицу апдейтить при просмотре...