Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Нужен небольшой совет [2]
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
Ну и что? Какая проблема-то? Все вторичные индексы innoDB ссылаются на первичный ключ, и отлично живут весьма огромные таблицы.
Конечно mysql будет работать с таким кол-во данных, я собственно не об этом. Я опять же по скорости работы, выбирать из одной таблицы где огромное число строк по индексу(id_user) или же по отдельно таблице просто и без индекса. И велика ли разница? (Добавление)
Цитата:
В отсутствии будущего и ужасных костылей тут же, как понадобится любая агрегация. А она понадобится. Иметь проект и даже представления не иметь о происходящих там делах - невозможно.
Это Вы что сейчас имеете ввиду?
И еще по поводу таблиц, если я не ошибаюсь то время выполнения запроса на выборку постов определенного пользователя(по индексу id_user) будет зависеть от кол-во записей в общем в это таблице постов. А если по отдельным таблицам, то будет зависеть от кол-во записей только конкретного пользователя. Я прав?
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Я опять же по скорости работы, выбирать из одной таблицы где огромное число строк по индексу(id_user) или же по отдельно таблице просто и без индекса. И велика ли разница?
только отдельных таблиц будет немеряно - а это уже тормоза изза файловой системмы.
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
в конце концов кому не нравятся большие таблицы в Mysql партицирование есть
Я ничего не имею против большой таблицы, меня волнует производительность выборки из нее. И если Вы говорите что тысячи открывания таблиц будет - плохо, то буду делать с большой таблицей и выборка по индексу. (Добавление)
Хотя может, если создавать таблицу для потов где-то около месяц или чуть меньше. То есть каждый месяц своя таблица, так сказать немного разбивать данные по времени. Как думайте скорость выборки увеличится? Так как чем меньше данных в таблице тем вроде должно быть по лучше... (Добавление)
Цитата:
Mysql партицирование
Думаю это то что нужно, но на данном этапе пока буду пользоваться 1 таблицей, а как данных будет много то можно будет заняться партицированием.
Спс caballero.
----- Так было, так есть и так будет
caballero
Отправлено: 05 Сентября, 2012 - 22:55:45
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Хотя может, если создавать таблицу для потов где-то около месяц или чуть меньше. То есть каждый месяц своя таблица, так сказать немного разбивать данные по времени.
партицирование это и делает
если будете разбивать сами не сможете делать поиск по постам, к примеру
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Теперь насчет 2 вопроса, как я уже писал у меня есть id_users(id пользователей через запятую) по сути это id тех пользователей которым этот пост добавлять не нужно(оно у них уже как бы есть). Я прописываю эти id через запятую в поле поста(таблица всех постов). Этих id в этом поле огромное кол-во(longtext).
И при определенном действие мне как бы необходимо разослать это сказание в ленты моим друзьям как бы, но только тем которых нет в этом списке id конкретного поста. Для начала я выбираю моих друзей, и можно делать запрос в mysql и делать через кучу LIKE то есть если друзей тыс 5 то соответственно столько же и операторjв LIKE, или можно выбрать это поле и через массив определить имеется ли в нем id моих друзей.
Это был первый вариант.
Теперь второй, это делать таблицу связки, где id_user(это id кому не надо рассылать пост), и id_post(для связи с таблицей постов). Но там строк будет в несколько сотен раз больше чем постов. (примерно тыс 50-100 на запись) И при этом придется делать очень много запросов к этой таблице, выбрав друзей потом делать запросы к этой таблице(примерная сложность n(кол-во друзей)). Хочется услышать Ваше мнение по этой проблеме...
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
и зачем держать список id в постах?
Ну это удобнее, чем в отдельности
Цитата:
сомневаюсь что ктото будет выставлять десятки чекеров на каждый пост
Нет там по другому, пользователь совершает действие с постом, и потом я добавлял id тех с кем дружит этот пользователь в это поле, то есть если у него 10 тыс друзей то они там приписываются через запятую и тд
Для того что бы когда друзья его друзей выполняли эту же операцию с эти постом, то тем у кого этот пост есть он его не добавлял в ленту.
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
чем?
Просто при этом действии с постом, необходимо выбрать этот пост, ну а как раз и это поле можно выбрать и через массив...
Цитата:
а зачем копировать в каждый пост если есть таблица откуда их можно получить в любой момент?
О какой таблице идет речь? Это делается что бы избежать дубликаты этих постов в лентах, друзей друзей и т.д То есть 1 пользователь совершил это действия, его друзьям разослался этот пост в ленту, а если тому кому он разослал уже до него было разослано этот пост другим его другом получается дубликат поста. Вот зачем это делается...
----- Так было, так есть и так будет
caballero
Отправлено: 05 Сентября, 2012 - 23:39:22
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
тогда таблица разосланных постов - id поста и id человека
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
тогда таблица разосланных постов - id поста и id человека
Ну так да, я написал это выше(2 вариант). Но тогда придется делать кучу запросов, сначала выбрать моих друзей а потом делать запросы у это таблице для каждого моего друга, если 5 тыс друзей то 5 тыс запросов...
----- Так было, так есть и так будет
caballero
Отправлено: 05 Сентября, 2012 - 23:48:24
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Но тогда придется делать кучу запросов, сначала выбрать моих друзей а потом делать запросы у это таблице для каждого моего друга,
запрос там всего один -
и это будет на три порядка быстрее чем парсить тысячт текстов
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.